将变量传递给提升的QWidget

时间:2015-07-21 05:06:25

标签: qt qwidget

我有两个班级:

-MainWindow

-MyWidget,使用QT Creator的设计选项卡在MainWindow.ui中进行提升。 两个类.ui都是在设计选项卡中设计的。

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

编辑:做了一个小例子并将代码添加到pastebin中,所以这篇文章不会变得臃肿。

MainWindow.h

MainWindow.cpp

其他链接在评论中

1 个答案:

答案 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 );