I have a QDialog
created in designer with a QFrame
testFrame which I've added a QHBoxLayout
to, and at some point after the whole thing has been created and shown I am trying to programatically create a new widget with the QFrame
as a parent. Whatever I try the new widget won't display:
End of init() method:
QBoxLayout *testFrameLayout = new QHBoxLayout(this->testFrame); //QT3 docs use QBoxLayout pointer when creating QHBoxLayout
During an event (e.g. a separate button has been pressed)
testButton = new QPushButton(this->testFrame);
testButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed, false);
testButton->setMaximumWidth(50);
testButton->setMaximumHeight(50);
testButton->setMinimumWidth(50);
testButton->setMinimumHeight(50);
testFrameLayout->addWidget(testButton);
I get this behaviour with different widgets, container classes (e.g. QGrid
where I don't have to manage any layout stuff), calling update()/repaint() (on testFrame, testButton, the dialog itself) e.t.c, whatever I try it works when done in init() but not if done after the dialog has been displayed. I must be missing something, so any help would be appreciated!
Note: I am working on a very large project that uses Qt 3, so solutions must be compatible with this version.
Calling
at the end solved this problem. Since using adjustSize() on the frame without show() on the actual button made the frame disappear, I think that maybe widgets are hidden until explicitly shown when added in like this.