0

いくつかの 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です:

ここに画像の説明を入力

4

1 に答える 1

1

私の WindowsXP では、ほとんどのプログラムを 148x96 未満に縮小することはできません。ウィジェットとはまったく関係がない場合があります。

256 個以上の正方形でテストし、各正方形の大きさを教えてください。

Windows (および使用しているすべてのもの) には、ユーザーが上部のボタン、タイトルの数文字、およびスクロールバー用の十分なスペースを表示できることを保証するために、この制限があります。そのため、ユーザーは 3x2px に縮小したプログラムを失うことはありません。

于 2011-10-19T21:19:43.987 に答える