如何在QtDesigner中将小部件添加到表单中。

3
在qdesigner_workbench.cpp文件中,我如何通过代码向FormWindow添加一个小部件(例如QLabel)? 由于createWidget()等方法都是抽象的,我该如何正确地使用内部机制将QLabel添加到活动的FormWindow中?
编辑: 在qdesigner_workbench.cpp文件中,这是我目前拥有的内容:
QDesignerFormWindowManagerInterface* fwm = core()->formWindowManager();
QDesignerFormWindowInterface* fw = fwm->activeFormWindow();

QWidget* mw = fw->mainContainer(); 

QLabel* label = new QLabel(mw);         //can be added correctly but not in the right hierarchy
label->setText("I am a good girl.");

mw(从fw -> mainContainer()获得)实际上是一个MainWindow,但我需要的真正数据在:

mw -> children[2] (which is a QDesignerWidget) -> children

设计师中有9个小部件,你可以看到上面提到了9个数组; 可以查看此链接(一个图像)进行说明。 http://img24.imagevenue.com/img.php?image=98871_a_122_476lo.jpg 那么...我该如何正确地添加QLabel小部件? 尝试过两种方式:
QLabel* label = new QLabel(fw);   // will be a sibling of MainContainer, which is the QMainWindow (mw) in this case
QLabel* label = new QLabel(mw);   // will be a sibling of QDesignerWidget

据报道,似乎两个作品都可以。
3个回答

5

如果您只想在表单上显示小部件,可以将您的QMainWindow或QDialog设置为小部件的父级:

QLabel *l = new QLabel(this);
l->setText("My long string");

其中this是指向您当前的QDialog或QMainWindow的指针。

否则,如ufukgun所指出的那样,如果您需要让您的小部件占据QMainWindow的中心,则可以使用setCentralWidget。


1

您应该将任何QWidget添加到表单的QLayout中。这样,在调整大小时,它将被放入表单的显示策略中。

form->ui->layout->add(yourQWidget);

根据您使用的 QLayout,add函数的参数可能会有所不同。


0
创建一个小部件并将其添加到您的主窗口,因为它是您的中央小部件。 mainWindow->setCentralWidget(centralWidget); 如果您想要添加一个标签,您可以将其添加到这个中央小部件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接