如何调用创建.ui设计表单在Qt与button.clicked()事件

How to call created .ui design form in Qt with button.clicked() event?

本文关键字:Qt button 事件 clicked 表单 何调用 调用 创建 ui      更新时间:2023-10-16

我是Qt的新手,我想问如何调用创建的。ui设计器表单与主窗口中的按钮连接。

我所做的:1. 创建了一个新的.ui设计表单(Forms)。右键单击->添加-> Qt设计器窗体)到当前项目。2. 在.ui表单中设计了一个about对话框。3.在主窗口中创建一个位置PushButton.clicked()

对于所有在Qt中做过编程的人,请帮助我解决这个问题,将PushButton与。ui表单连接起来,这样PushButton就可以调用/显示在。ui中创建的表单。

使用。ui文件在Qt的文档中有解释:http://doc.qt.io/archives/qt - 4.7 -/-设计-使用- a - ui file.html

概要:处理.ui文件的最简单方法是在编译时通过ui(用户界面编译器)运行它。如果.ui文件包含在项目(.pro)文件中,则会自动完成此操作。(在您的情况下,"添加新"可能会自动完成此操作。)然后,您只需要在源文件中包含生成的c++头文件。它的名字应该类似于"ui_nameoftheoriginaluifile.hpp"。当然,在此之后,您需要实例化.hpp文件中定义的表单。

编辑添加:

你的代码有几个问题,从可读性开始。我不知道您以前是否使用过面向对象的语言,但c++的一个非常基本的规则是,类名以大写字母开头,以便于将它们与对象和其他变量区分开来。所以类名应该是"About"、"Parent"等。

编译错误是由使用"about"而不是"ui_about.hpp"文件- "MainWindow"中实际使用的类名引起的。(这取决于您在.ui文件中使用的表单的名称。)

如果你正在使用Qt Creator:按住Ctrl键并单击包含指令中的文件"ui_about.h"的名称。这将打开以供检查。试着弄清楚它是如何工作的。

您还没有将opDialog()函数定义为"parent.cpp"中的"parent"类的成员,这会导致另一个编译时错误。

你也不应该为about对话框使用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);
}