[Interest] QGridLayout does not update
Etienne Sandré-Chardonnal
etienne.sandre at m4x.org
Tue Mar 19 15:28:47 CET 2013
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130319/3013c472/attachment.html>
More information about the Interest
mailing list