いくつかの QTableWidget(s) を相互に再帰的に埋め込んでいます。最終的な GUI には、4 ~ 2,000 の正方形が含まれます。以下は、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です: