我有两个班级:
-MainWindow
-MyWidget,使用QT Creator的设计选项卡在MainWindow.ui中进行提升。 两个类.ui都是在设计选项卡中设计的。
我尝试从MainWindow将变量传递给MyWidget,但没有成功。编译器不会给出任何错误,但变量没有传递。有没有办法做到这一点?只要我不向其导入MainWindow或将MyWidget导入MainWindow,MyWidget就能正常工作。导入后,我无法通过代码控制MyWidget的内容。有什么建议吗?
编辑:做了一个小例子并将代码添加到pastebin中,所以这篇文章不会变得臃肿。
其他链接在评论中
答案 0 :(得分:1)
您的班级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
类需要在构造时传递参数,则可以从.ui文件中删除widget
instanciation,并使用mw
属性MainWindow
在本地创建它。 1}}和你一样上课。但是,要让此实例显示在屏幕上,您必须将其添加到MainWindow
的布局中,例如:ui->horizontalLayout->addWidget( &mw );