gpt4 book ai didi

c++ - VS2010 中的 Qt - 无法使用设计器创建的对象

转载 作者:行者123 更新时间:2023-11-28 08:09:38 25 4
gpt4 key购买 nike

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

我的观点是,我无法创建事件、槽、信号等,因为这些对象似乎不存在于我的 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;
};

最佳答案

要在您的代码中访问 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("源文件中设置的新标签文本");

在您的构造函数中,调用 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 工具处理大部分设置。单击按钮时将触发您的自定义插槽。

关于c++ - VS2010 中的 Qt - 无法使用设计器创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com