Qt in VS2010 - 无法使用Designer创建的对象

时间:2012-02-26 00:00:00

标签: c++ visual-studio-2010 qt

我在Visual Studio 2010中使用Qt,但我有疑问。 每当我使用Qt Designer创建GUI时,在Visual I中编译时无法访问设计器自动创建的对象,如按钮,列表框等... 我该怎么做才能使用它们?

我的观点是,我无法创建事件,插槽,信号等,因为我的main.cpp和mainclass.cpp中似乎不存在这些对象。

谢谢你们!

我正在使用VS 2010和QT 4.8.0。

#include <QListWidget.h>
#include <stdio.h>
#include <string.h>
#include "ui_ratagbc.h"

class dasm: QObject
{
    Q_OBJECT
public:
    dasm(void);
    ~dasm(void);
    int DAsm(FILE *,int);
private:
    Ui::RataGBCClass *ui;
};

1 个答案:

答案 0 :(得分:1)

要访问代码中的GUI,请包含运行uic工具的结果。创建一个类,并将uic生成的类的实例作为成员变量,它位于Ui名称空间中。

#include "ui_MyGUI.h" //automatically generated by uic tool

class MyClass : public QDialog //or whatever type of GUI you made
    {
    Q_OBJECT //this macro flags your class for the moc tool
    //other variables and functions
    Ui::MyGUI ui;
    };

您可以通过此'ui'对象进行访问: ui.label->setText("New label text set in source file");

在构造函数中,调用ui.setupUi(this)

请注意Q_OBJECT宏 - 如果您要定义信号和插槽或类似的东西,那么您需要Q_OBJECT来标记moc工具的类来识别它。

编辑以回答评论中的后续问题: 听起来你想要做的就是使用信号/插槽系统。在您的班级定义中,包括以下内容:

class MyClass
{
//other stuff
public slots:
void customSlot(){/* your actions here */}
//other stuff
};

然后在其他地方,通常在构造函数或初始化函数中,包括这一行:

connect(ui.button, SIGNAL(clicked()), this, SLOT(customSlot()));

moc工具处理大部分设置。单击按钮后,将触发您的自定义插槽。