Domanda

Sto Embedding alcuni QTableWidget (s) in modo ricorsivo uno dentro l'altro. La GUI finale avrà 4 ad un paio di migliaia di piazze. Ecco un esempio screenshot che mostra solo 16 quadrati:.

...

Perché ci sono così tanti quadrati (migliaia) che devono essere visualizzati ho bisogno della dimensione minima di ogni quadrato di essere qualcosa di simile a 5x5 pixel.

Il problema è che ho usato il mio mouse per ridimensionare la finestra più piccola possibile ... e poi ho avuto modo di ciò che si vede nello screenshot! Lo screenshot ha ogni essere quadrato circa 18x18 pixel ... che non è abbastanza piccolo per adattarsi migliaia di piazze su uno schermo. Qualcosa mi impedisce di usare il mio mouse per dimensioni le piazze più piccolo!

Come posso fare le piazze di questo screenshot hanno una dimensione minima più piccola?

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);
}

UPDATE - Come da commenti qui sotto ho provarono rendendo molte altre piazze e qui è 1024:

entrare descrizione dell'immagine qui

È stato utile?

Soluzione

Al mio WindowsXP, non posso compattare maggior parte dei programmi inferiore a 148x96. Potrebbe non hanno assolutamente nulla a che fare con i widget.

Prova con 256 + quadrati, e ci dicono quanto grande ogni quadrato è.

Windows (e tutto ciò che è si sta utilizzando) ha questa limitazione per garantire gli utenti sono in grado di vedere i bottoni sulla parte superiore, alcune lettere del titolo, e abbastanza spazio per le barre di scorrimento. E così l'utente non perde il programma che ridotto a 3x2px.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top