我是 Qt 的新手,我想问一下如何调用创建的 .ui 设计器窗体以与 MainWindow 中的 PushButton 连接。
我做了什么: 1. 为当前项目创建了一个新的.ui设计窗体(Forms.right click -> Add New -> Qt Designer Form)。 2. 在创建的.ui 窗体中设计一个关于对话框。 3. 在 MainWindow 中创建一个插槽 PushButton.clicked()。
请各位用过Qt编程的 friend 帮我解决这个问题,把PushButton和.ui窗体连接起来,这样PushButton就可以调用/显示在.ui中创建的窗体了。
感谢您的关注。
最佳答案
Qt 文档中解释了如何使用 .ui 文件: http://doc.qt.io/archives/qt-4.7/designer-using-a-ui-file.html
总结: 处理 .ui 文件的最简单方法是通过 uic 运行它(用户界面编译器)在编译时。如果 .ui 文件包含在您的项目 (.pro) 文件中,则会自动完成此操作。 (在您的情况下,“Add New”可能会自动完成此操作。)然后您只需在源文件中包含生成的 C++ 头文件。它的名称应该类似于“ui_nameoftheoriginaluifile.hpp”。当然,之后还需要实例化.hpp文件中定义的表单。
编辑添加:
从代码的可读性开始,您的代码存在多个问题。我不知道你以前是否使用过面向对象的语言,但 C++ 中的一个非常基本的规则是类名以大写字母开头,以便于将它们与对象和其他变量区分开来。所以类名应该是“About”、“Parent”等。
编译错误是因为使用了“about”而不是“ui_about.hpp”文件中实际使用的类名——“MainWindow”。 (这取决于您在 .ui 文件中使用的表单的名称。)
如果您使用的是 Qt Creator:按住 Ctrl 键并单击 include 指令中的文件名“ui_about.h”。这将打开它进行检查。尝试弄清楚它是如何工作的。
您还没有将 opDialog() 函数定义为“parent.cpp”中“父”类的成员,这会导致另一个编译时错误。
您也不应该将 QMainWindow 用于关于对话框。 QMainWindow 应该是您的应用程序的主窗口 - 不应该再有它的任何实例。
所以,about.h:
namespace Ui {
class MainWindow;
}
class about : public QMainWindow {
Q_OBJECT
public:
about(QWidget *parent = 0);
~about();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
};
以及about.cpp的开头:
#include "about.h"
#include "ui_about.h"
about::about(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
关于c++ - 如何使用 button.clicked() 事件在 Qt 中调用创建的 .ui 设计表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8545830/