我互相递归地嵌入了一些QTableWidget。最终的GUI将具有4到几千个正方形。这是一个仅显示16个正方形的示例屏幕截图:
因为需要显示的正方形太多(千个),所以我需要每个正方形的最小尺寸为5x5像素。
问题是我使用鼠标将窗口的尺寸设置得尽可能小...然后我就达到了屏幕截图中所见!屏幕截图中的每个正方形约为18x18像素...这还不足以容纳屏幕上的数千个正方形。某些原因阻止了我使用鼠标来缩小正方形的尺寸!
如何使此屏幕截图中的正方形的最小尺寸较小?
main.cpp:
#include "TableWidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TableWidget *x1 = new TableWidget(2,2);
for(int i = 0; i < x1->rowCount(); i++) {
for(int j = 0; j < x1->columnCount(); j++) {
x1->setCellWidget(i,j,new TableWidget(2,2));
}
}
QGridLayout *layout = new QGridLayout;
layout->addWidget(x1, 0, 0);
QWidget *window = new QWidget;
window->setLayout(layout);
window->show();
return a.exec();
}
TableWidget.h:
class TableWidget : public QTableWidget
{
Q_OBJECT
public:
TableWidget(int rows, int columns, QWidget *parent = 0);
private:
signals:
public slots:
};
TableWidget.cpp:
TableWidget::TableWidget(int rows, int columns, QWidget *parent) :
QTableWidget(rows,columns,parent)
{
//------
QTableWidget::horizontalHeader()->hide();
QTableWidget::verticalHeader()->hide();
//------
QTableWidget::horizontalHeader()->setResizeMode(QHeaderView::Stretch);
QTableWidget::verticalHeader()->setResizeMode(QHeaderView::Stretch);
//------
QTableWidget::setEditTriggers(QAbstractItemView::NoEditTriggers);
//------
QTableWidget::setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QTableWidget::setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//------
QTableWidget::horizontalHeader()->setMinimumSectionSize(1);
QTableWidget::verticalHeader()->setMinimumSectionSize(1);
QTableWidget::horizontalHeader()->setDefaultSectionSize(1);
QTableWidget::verticalHeader()->setDefaultSectionSize(1);
// FIXME, the minimum size is not 1 pixel... it is like 10 pixels...
//------
QTableWidget::setSelectionMode(QAbstractItemView::NoSelection);
}
更新-根据下面的评论,我尝试渲染更多正方形,这是1024:
最佳答案
在WindowsXP上,我无法将大多数程序缩小到148x96以下。它可能与您的Widget完全无关。
用256个以上的正方形进行测试,并告诉我们每个正方形有多大。
Windows(以及您使用的是什么)具有此限制,以确保用户能够看到顶部的botton,标题的几个字母以及足够的滚动条空间。因此,用户不会丢失缩小到3x2px的程序。