Qt 5.12 编写多窗口程序(新手手把手教学) 您所在的位置:网站首页 qtablewidget右键弹出菜单 Qt 5.12 编写多窗口程序(新手手把手教学)

Qt 5.12 编写多窗口程序(新手手把手教学)

2023-03-25 02:22| 来源: 网络整理| 查看: 265

目录

实现功能:

实现原理:

实现过程:

1、首先新建 Qt工程,工程名为 NewForm,Base class 选为 QWidget。建立好后工程文件列表如下图。

2、新建对话框类,如下图,在新建中,选择 Qt Designer Form Class(Qt设计师界面类)。

3、如下图,在 mydlg.ui 中拖入一个 Push Button,将其上的文本改为“进入主窗口”,在其属性窗口中将其 objectName 改为 enterBtn,在下面的 Signals and slots editor 中进行信号和槽的关联,其中,Sender(发送者) 设为 enterBtn,Signal(信号) 设为 clicked(),Receive (接收者)设为 myDlg,Slot (槽)设为 accept()。这样就实现了单击这个按钮使这个对话框关闭并发出 Accepted 信号的功能。下面我们将利用这个信号。(不知道位置请看序号)

4、修改主函数 main.cpp,如下:

5、如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠标右键,在弹出的菜单中选择 go to slot(转到槽)。(双击该文件)

6、我们选择单击事件 clicked()

7、我们在弹出的槽函数中添加一句:

8、完成

实现功能:

程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。

实现原理:

程序里我们先建立一个主工程,作为主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。

实现过程: 1、首先新建 Qt工程,工程名为 NewForm,Base class 选为 QWidget。建立好后工程文件列表如下图。

a、点击“文件”菜单,选择“新建文件或项目”,如下图:

b、按照下图选择模板:

c、设置工程名为:NewForm,修改工程路径,如下图

d、选择构建系统,如下图

e、选择基类为:QWidget,如下图

f、一路“下一步”,即可完成工程创建。如下图

2、新建对话框类,如下图,在新建中,选择 Qt Designer Form Class(Qt设计师界面类)。

a、新建窗口,鼠标右键选择“Add new..”,(或者点击“文件”菜单,选择“新建文件或项目”)

2、选择Qt-->Qt设计师界面类

c、选择界面模版: Dialog without Buttons。

d、填写类名:Mydlg

e、添加到项目中(多项目请勿弄错)。完成

3、如下图,在 mydlg.ui 中拖入一个 Push Button,将其上的文本改为“进入主窗口”,在其属性窗口中将其 objectName 改为 enterBtn,在下面的 Signals and slots editor 中进行信号和槽的关联,其中,Sender(发送者) 设为 enterBtn,Signal(信号) 设为 clicked(),Receive (接收者)设为 myDlg,Slot (槽)设为 accept()。这样就实现了单击这个按钮使这个对话框关闭并发出 Accepted 信号的功能。下面我们将利用这个信号。(不知道位置请看序号)

 添加一组“Signals and slots editor ”后,

下拉选择即可(看不清可以把间距拉宽)

4、修改主函数 main.cpp,如下:

查找项目文件如下图:

#include #include “widget.h” #include “mydlg.h” //加入头文件 int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; mydlg my1; //建立自己新建的类的对象 my1 if(my1.exec()==QDialog::Accepted) //利用 Accepted 信号判断 enterBtn 是否被按下 { w.show(); //如果被按下,显示主窗口 return a.exec(); //程序一直执行,直到主窗口关闭 } else return 0; //如果没被按下,则不会进入主窗口,整个程序结束运行 } 5、如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠标右键,在弹出的菜单中选择 go to slot(转到槽)。(双击该文件)

6、我们选择单击事件 clicked()

7、我们在弹出的槽函数中添加一句: my2.show(); #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { my2.show(); }

my2 为我们新建对话框类的另一个对象,但是 my2 我们还没有定义,所以在 widget.h 文件中添加相应代码,如下,先加入头文件,再加入 my2 的定义语句,这里我们将其放到 private里,因为一般的函数都放在 public 里,而变量都放在 private 里。

#ifndef WIDGET_H #define WIDGET_H #include #include "mydlg.h" //包含头文件 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); private slots: void on_pushButton_clicked(); private: Ui::Widget *ui; myDlg my2; //对 my2 进行定义 }; #endif // WIDGET_H 8、完成

到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是一样的。这个程序里我们实现了两类窗口打开的方式,一个是自身消失而后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的方法是不同的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有