00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 开发环境
  • 03. 程序设计
  • 04. 程序执行
  • 05. 预留
  • 06. 附录

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

【Qt】Qt窗口程序相关推荐

  1. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...

  2. c#退出窗口跳转_编写Qt多窗口程序

    导语 程序要实现的功能是:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出.当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个 ...

  3. Qt笔记-窗口程序在任务栏中隐藏及永久置顶

    这里主要是因为想搞个水印的程序. 感觉视频加水印比较麻烦,不如自己写个加水印的程序. 如下的效果: 这里有两点要注意,一个是在任务栏中隐藏: 主要是 Qt::Tool setWindowFlags(Q ...

  4. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )

    文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...

  5. python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)

    https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMainWindow.html?highlight=qmainwindow#PySide2.QtWid ...

  6. 使用Qt生成第一个窗口程序

    一.打开QtCreater,点击New Project 二.在Qt中,最常用的窗口程序为widgets控件程序,这里我们选择Qt Widgets Application 三.Qt生成的debug和re ...

  7. 使用Qt编辑关闭窗口程序的一些见解

    http://sunshine1106.blog.51cto.com/1371108/305106/  近日在测试软件功能时,发现一些不是太显眼问题,如希望在点击窗口右上角的X按钮关闭窗口时,能够提示 ...

  8. OpenCV(3):用Vs+Qt制作一个查看图片相似度的窗口程序

    OpenCV(2):用Vs+Qt制作一个显示两张图片的窗口程序 在制作了窗口程序后,在网上找了比较两张图片差异度的算法. 哈希值方法:https://blog.csdn.net/fengbingchu ...

  9. qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...

最新文章

  1. android小程序案例_这几个小程序案例告诉你,小程序该怎么做!
  2. Hadoop家族学习路线图
  3. 程序员删数据库事件引发的个人思考
  4. html广告悬浮窗口,JS实现悬浮移动窗口(悬浮广告)的特效
  5. 一 python编程基础
  6. 【CSS】text-align:justify 的使用
  7. wamp切换mysql版本_wampserver多版本php切换失败
  8. OBS推流 rtmp服务器(docker) python opencv拉流
  9. ae渲染出现错误是什么问题_AE 渲染输出 “H264”时出现这个错误是什么意思?...
  10. 重装系统显示“安装程序正在应用系统设置“静止不动
  11. 平板app尺寸html5,app界面设计尺寸规范大全
  12. 20条职业发展建议,送给拒绝原地踏步的你
  13. 视频教程-跟汤老师学Java(第18季):设计模式-Java
  14. [转]天龙八部的BillingServer
  15. php 上传图片方法
  16. 计算机促销策划方案,电脑促销活动方案 2017暑假电脑促销活动方案
  17. 笔记:单轴上的动量守恒
  18. 配置vscode终端字体
  19. 草料二维码生成器怎么连接打通其他应用?
  20. php正则匹配中文、汉字

热门文章

  1. 构件开发常见问题和错误的解决方案和处理方法
  2. 计算机位数与内存相关,弄懂电脑的各种位数、内存、存储
  3. 【C语言练习】【指针】定义一个函数move,实现将长度为n、名为a的序列中,各元素依次顺序循环,右移m个位置
  4. 选择排序之小白学算法
  5. Java黑皮书课后题第5章:*5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目
  6. oracle rac 节点启动,Oracle 10g RAC 节点自动重启故障处理
  7. 【2012百度之星/初赛上】D:轮子上的度度熊
  8. 《喜剧之王》- 24/7 - Cagnet
  9. flask 项目基本框架的搭建
  10. 并发(Concurrency)和并行(Parallelism)