你如何改变QTableWidget的最小尺寸?

时间:2011-10-19 20:16:52

标签: c++ qt user-interface qtablewidget

我在一起递归地嵌入了一些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:

enter image description here

1 个答案:

答案 0 :(得分:1)

在我的WindowsXP上,我无法缩小大多数低于148x96的程序。它可能与您的小部件完全无关。

用256+方格测试,并告诉我们每个方格有多大。

Windows(以及您正在使用的任何内容)都有此限制,以确保用户能够看到顶部的底部,标题的几个字母以及滚动条的足够空间。因此,用户不会丢失他们缩小到3x2px的程序。