Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt3-将小部件添加到现有小部件及其布局_Qt_Qwidget_Qtgui_Qt3 - Fatal编程技术网

Qt3-将小部件添加到现有小部件及其布局

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

我在designer中创建了一个QDialog,其中有一个QFrame testFrame,我在其中添加了一个QHBoxLayout,在整个事情创建并显示之后的某个时刻,我试图通过编程创建一个新的小部件,并将QFrame作为父部件。无论我尝试什么,新小部件都不会显示:

初始化方法结束:

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起了作用!我的开发负责人说他还记得以前有过这个问题。不幸的是,现在: