Как изменить минимальный размер QTableWidget? - PullRequest
0 голосов
/ 20 октября 2011

Я встраиваю некоторые QTableWidget (ы) рекурсивно друг в друга.Окончательный графический интерфейс будет иметь от 4 до нескольких тысяч квадратов.Вот пример снимка экрана, показывающий только 16 квадратов ::1001*

...

Поскольку существует так много квадратов (тысяч), которые необходимо отобразить, мне нужен минимальный размер каждого квадратачто-то вроде 5х5 пикселей.

Проблема в том, что я использовал мою мышь, чтобы размер окна был как можно меньше ... и затем я получил то, что вы видите на скриншоте!Скриншот имеет каждый квадрат размером около 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 Ответ

1 голос
/ 20 октября 2011

На моем WindowsXP я не могу сжать большинство программ ниже 148x96. Это может быть абсолютно не связано с вашими виджетами.

Протестируйте более 256 квадратов и расскажите, насколько велик каждый квадрат.

Окна (и все, что вы используете) имеют это ограничение, чтобы гарантировать пользователям возможность видеть верхнюю часть окна, несколько букв заголовка и достаточно места для полос прокрутки. И поэтому пользователь не теряет программу, которую он сократил до 3x2px.

...