我在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;
};
答案 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
工具处理大部分设置。单击按钮后,将触发您的自定义插槽。