Qt3-将小部件添加到现有小部件及其布局
我在designer中创建了一个QDialog,其中有一个QFrame testFrame,我在其中添加了一个QHBoxLayout,在整个事情创建并显示之后的某个时刻,我试图通过编程创建一个新的小部件,并将QFrame作为父部件。无论我尝试什么,新小部件都不会显示: 初始化方法结束:Qt3-将小部件添加到现有小部件及其布局,qt,qwidget,qtgui,qt3,Qt,Qwidget,Qtgui,Qt3,我在designer中创建了一个QDialog,其中有一个QFrame testFrame,我在其中添加了一个QHBoxLayout,在整个事情创建并显示之后的某个时刻,我试图通过编程创建一个新的小部件,并将QFrame作为父部件。无论我尝试什么,新小部件都不会显示: 初始化方法结束: QBoxLayout *testFrameLayout = new QHBoxLayout(this->testFrame); //QT3 docs use QBoxLayout pointer when
QBoxLayout *testFrameLayout = new QHBoxLayout(this->testFrame); //QT3 docs use QBoxLayout pointer when creating QHBoxLayout
在事件期间,例如按下了单独的按钮
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);
我通过不同的小部件、容器类(例如QGrid)获得了这种行为,我不需要管理任何布局内容,在testFrame、testButton、对话框本身e.t.c上调用update/repaint,无论我在init中尝试了什么,它都可以工作,但如果在对话框显示后完成,则不能工作。我一定错过了什么,所以任何帮助都将不胜感激
注意:我正在处理一个使用Qt 3的大型项目,因此解决方案必须与此版本兼容。以下是我的Qt3应用程序对话框中的一些工作代码:
QVBoxLayout *vb = new QVBoxLayout(this, 5, 5);
// ...
QHBoxLayout *askline = new QHBoxLayout(vb, 10);
QPushButton *ok = new QPushButton(tr("OK"), this);
QPushButton *cancel = new QPushButton(tr("Cancel"), this);
askline->addWidget(ok);
askline->addWidget(cancel);
adjustSize();
// ...
我认为您的问题在于布局没有为QPushButton分配任何空间,需要调整大小。呼叫
testButton->show();
最终解决了这个问题。由于在框架上使用adjustSize而不在实际按钮上显示会使框架消失,因此我认为小部件可能会隐藏,直到在这样添加时显式显示。感谢提示,但最终使整个框架消失。然而,在最后调用testButton->show起了作用!我的开发负责人说他还记得以前有过这个问题。不幸的是,现在: