将变量传递给提升的 QWidget

Passing variable to promoted QWidget

我有两个 classes:

-主窗口

-MyWidget 在 MainWindow.ui 中使用 QT Creator 的设计选项卡进行升级。 class .ui 都是在设计选项卡中设计的。

我尝试将变量从 MainWindow 传递给 MyWidget,但没有成功。编译器没有给出任何错误,但变量没有传递。有什么办法吗?只要我不将 MainWindow 导入它或将 MyWidget 导入 MainWindow,MyWidget 就可以正常工作。导入后我无法通过代码控制 MyWidget 的内容。有什么建议吗?

编辑:制作了一个小示例并将代码添加到 pastebin,因此 post 不会变得臃肿。

MainWindow.h

MainWindow.cpp

另一个链接在评论中

您的 class MainWindow 不需要 MyWidget 属性。 MyWidget对象实际上是由Ui::MainWindow对象创建的。

因此,要访问您的 MyWidget 对象(作为 MainWindow 小部件的一部分显示在屏幕上的对象),请使用 ui->widget(因为小部件是您在Qt Designer <widget class="MyWidget" name="widget" native="true"/>),而不是 mw.

修改 mw 没有意义,因为 MyWidget 的这个实例不用于 GUI 显示。

然后你必须改变:

connect(this, SIGNAL(text(QString, QString)),&mw, SLOT(addText(QString,QString)));

进入:

connect(this, SIGNAL(text(QString, QString)),ui->widget, SLOT(addText(QString,QString)));

注意:如果MyWidget class需要在构造时传递参数,您可以从.ui文件中删除widget实例化并使用本地创建它mw 属性的 MainWindow class 和你一样。但是,然后,要在屏幕上显示此实例,您必须将其添加到 MainWindow 的布局中,例如(例如):ui->horizontalLayout->addWidget( &mw );