Dear all, I am encountering the following issue using QGridLayout in a widget.
The QGridLayout is currently used for displaying labels along a grid with two columns, in a subclassed QWidget. This QWidget was set as the widget of a QSCrollArea, the QScrollArea is the content of a QDockWidget. 1) In the QWidget constructor, I create the QGridLayout and populate it with dummy labels for testing. This works: gridLayout = new QGridLayout(this); setLayout(gridLayout); for(int i=0;i<15;i++) { QLabel * nameWidget = new QLabel("Testing!!!!!!", this); gridLayout->addWidget(nameWidget, i, 0); QLabel * statusWidget = new QLabel("N/A", this); gridLayout->addWidget(statusWidget, i, 1); } This works as expected, especially the column size is adjusted to the QLabel widths 2) Then in a "setServerNames" slot of the QWidget, I do: QLayoutItem *child; while ((child = gridLayout->takeAt(0)) != 0) { delete child->widget(); delete child; } if(serverList.size()==0) return; for(int i=0;i<serverList.size();i++) { QLabel * nameWidget = new QLabel(serverList[i], this); gridLayout->addWidget(nameWidget, i, 0); QLabel * statusWidget = new QLabel("N/A", this); gridLayout->addWidget(statusWidget, i, 1); } When the slot is called, the layout is not refreshed : the column width stays as it was adjusted in the constructor, so some of the QLabels are cropped, while there is still plenty of space on the right. Worse, if the layout is not populated in the constructor, then when the slot is called, nothing is displayed, likely because the layout is not refreshed, and sizes are null. I'm using Qt 4.8.3 under Windows Any idea? Thanks! Etienne
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest