【Qt】Qt窗口程序

165 篇文章 446 订阅
本文介绍了如何使用Qt Creator在Windows 10环境下,基于Qt5.15或Qt6开发一个窗口程序。程序包含主窗口和登录对话框,通过信号和槽机制实现窗口间的交互。用户必须通过登录对话框才能进入主窗口,而从主窗口显示的对话框关闭后总会返回主窗口。详细步骤包括创建项目、设计界面、添加信号和槽以及编写代码。
摘要由CSDN通过智能技术生成

00. 目录

01. 概述

程序要实现的功能是:运行开始出现一个对话框,按下登录主界面按钮后该对话框消失并进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。进入主窗口后,按下显示对话框按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。

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

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 程序设计

3.1 设计主窗口

打开Qt Creator,新建Qt Widgets Application,项目名称设置为2Widget,在类信息界面保持基类为QMainWindow、类名为MainWindow

3.2 完成项目创建后,双击mainwindow.ui文件进入设计模式,从左侧部件列表中向界面上拖入一个Push Button,然后双击并修改显示文本为“按钮”,
在这里插入图片描述

3.3 添加登录对话框

往项目中添加新文件,这里可以在编辑模式左侧的项目目录上右击,然后选择添加新文件菜单,如下图所示。当然也可以在文件菜单中进行添加。
在这里插入图片描述

3.4 模板选择Qt分类中的Qt设计师界面类,然后界面模板选择Dialog withoutButtons,如下图所示。
在这里插入图片描述

3.5 单击下一步进入类信息界面,这里将类名更改为LoginDialog(注意类名首字母一般大写)。如下图所示,下面的相关文件会自动改名。
在这里插入图片描述

3.6 当完成后会自动跳转到设计模式,可以对新添加的对话框进行设计。我们向界面上拖入一个Push Button,然后更改显示文本为“登录到主界面”。为了实现点击这个按钮后可以关闭该对话框并显示主窗口,我们需要设置信号和槽的关联。按下F4,便进入了信号和槽编辑模式。按着鼠标左键,从按钮上拖向界面,如下图所示。
在这里插入图片描述

当放开鼠标后,会弹出配置连接对话框,这里我们选择pushButton的clicked()信号和LoginDialog的accept()槽并按下确定按钮。如下图所示。
在这里插入图片描述

设置好信号和槽的关联后,界面如下图所示。
在这里插入图片描述

完成后,可以按下F3键来返回控件编辑模式。

3.7 按下Ctrl+2返回代码编辑模式,在这里打开main.cpp文件,添加代码:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    LoginDialog dlg;

    if (dlg.exec() == QDialog::Accepted)
    {
           w.show();
           return a.exec();
    }
    else
    {
        return 0;
    }
}

在这里,我们先创建了LoginDlg类的对象dlg,然后让dlg运行,即执行exec()函数,这样会显示对话框窗口,然后判断exec()的返回值,如果用户按下了登录按钮,那么返回值应该是Accepted,这时就显示主窗口,并正常执行程序;如果没有按下登录按钮,那么就结束程序。

3.8 讲述了一种显示对话框的情况,下面再来讲述一种情况。我们打开mainwindow.ui文件进入设计模式,然后在“按钮”部件上右击并选择转到槽菜单,如下图所示。
在这里插入图片描述

在弹出的转到槽对话框中选择第一个clicked()信号并按下确定按钮。这时会跳转到编辑模式mainwindow.cpp文件的on_pushButton_clicked()函数处,这个就是自动生成的槽,已经自动在mainwindow.h文件中进行了声明。我们只需要更改函数体即可。

void MainWindow::on_pushButton_clicked()
{
    QDialog *pDlg = new QDialog(this);

    pDlg->show();
}

我们使用了两类窗口打开的方式,一个是自身消失而后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的方法是不同的。而且我们还使用了两种方式来使用信号和槽,一种是直接在设计模式编辑信号和槽,另一种是在设计模式通过部件的“转到槽”菜单来自定义槽函数。信号和槽是Qt非常核心的内容,可以说如果不会灵活使用信号和槽,那么使用Qt也就失去了意义,但是大家也不用急于掌握它。

04. 程序执行

在这里插入图片描述

05. 预留

06. 附录

源码下载:Qt窗口程序示例.rar

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值