《Qt5:Widget、Dialog和MainWindow之间的关系》_widgets和mainwindow-程序员宅基地

技术标签: 《QT学习笔记》  

目录

概述

官方文档

Widget(小部件)

 MainWindow(主窗口)

 

Dialog(对话框)


概述


Widget翻译过来是小部件的意思,Widget、Dialog和MainWindow三者都可以独立创建用户界面。QWidget类是所有用户界面对象的基类,QMainWindow和QDialog其实就是QWidget的子类,唯一有点血缘关系的就是继承了QWidget类,其余的就没有什么关系了,的其余子类如下所示:

QAbstractButton,QAbstractSlider,QAbstractSpinBox,QCalendarWidget,QComboBox,QDesktopWidget,QDialogQDialogButtonBox,QDockWidget,QFocusFrame,QFrame,QGroupBox,QKeySequenceEdit,QLineEdit,QMainWindow,QMdiSubWindow,QMenu,QMenuBar,QOpenGLWidget,QProgressBar,QRubberBand,QSizeGrip,QSplashScreen,QSplitterHandle,QStatusBar,QTabBar,QTabWidget,QToolBar和QWizardPage

 

官方文档


QMainWindow类:https://doc.qt.io/qt-5/qmainwindow.html 

QWidget类:https://doc.qt.io/qt-5/qwidget.html

QDialog类:https://doc.qt.io/qt-5/qdialog.html

 

Widget(小部件)


小部件是用户界面的原子:它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制自己(继承了绘制类)。每个小部件都是矩形的,它们按Z顺序排序。

小部件包括窗口小部件和非窗口小部件。

1、窗口小部件(可以称为独立窗口或者顶级窗口小部件)就是我们创建Qt桌面应用程序时,自动生成的窗口界面,包含标题栏,可以设置标题和图标,还有什么最大最小化以及退出按钮,它本身就是父窗口(未嵌入其它窗口)。MainWindow和Dialog以及Dialog的子类都是典型的窗口小部件。

QWidget *parent = 0

2、非窗口小部件是子小部件,它是嵌入在父窗口中的,不能独立显示,只能显示在其父窗口小部件中。Qt  Designer中的所有小部件都属于非窗口小部件,都需要嵌入到父窗口小部件中,用于显示数据和状态信息,接收用户输入。

 

 

 MainWindow(主窗口)


主窗口提供了构建应用程序用户界面的框架。主窗口拥有自己的布局,包括中央区域、菜单栏、工具栏、状态栏以及Dock小部件,具体分布如下图所示。布局的中心区域可以被任何类型的小部件占用,也就是我们常用来拖拉控件的区域,其它区域可以没有,但是不能没有中央区域。最常见的主窗口就是WPS。稍微大一点的项目就使用QMainWindow来创建,嵌入到主窗口使用QWidget,辅助窗口使用QDialog,如果是内容比较单一的项目,使用QDialog基本上也可以搞定了。

 

 

Dialog(对话框)


Dialog(对话框)一般用作辅助窗口,为用户提供选项并主窗口进行交互,弹出一个对话框,然后选择“OK”或者“cannel”。此外,Qt也提供了许多现成的标准对话框,可用于标准任务,如文件对话框、字体对话框、颜色对话框、消息对话框等。 对话框又分为模态对话框和非模态对话框。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mars_xiaolei/article/details/89947412

智能推荐

【K210+micropython】学习总结_k210 mircpython原理-程序员宅基地

文章浏览阅读815次。【K210+micropython】学习总结这篇就不用模板了。K210+microPyhton五天学习圆满结束了!当然我学到的电控知识并不只前面的那几篇博客,我只是挑选了几个学习过程中比较“印象深刻”的几个知识,其他的什么串口通信、点灯、传感器读取等等都没写(其实是懒。。)。毕竟是比赛集训阶段,我现在算是在摸鱼。眼看电赛在即,也该多提高一下图像处理算法和机器学习方面的运用能力了,不多说了,学习matlab搞数模去了(bushi)。——————————————————————————我是分割线———_k210 mircpython原理

android studio ADB integration问题_enable adb integration没有-程序员宅基地

文章浏览阅读1k次。Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled._enable adb integration没有

Android 增量编译总结-程序员宅基地

文章浏览阅读2.2k次。增量编译简介 增量编译是相对全量编译而言的。所谓增量编译,是指当源程序的局部发生变更后进重新编译的工作只限于修改的部分及与之相关部分的内容,而不需要对全部代码进行编译。增量编..._android studio 增量编译

html无法正常播放MP3格式的音频及解决方案_html mp3-程序员宅基地

文章浏览阅读1.1w次。问题描述:设计当鼠标悬停到标签上时,会播放对应的音频。报错如下:Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.原因:在Chrome的现代版本中,您无法在默认情况下启用声音时自动播放视频。解决方案:在audio标签属性..._html mp3

css+html知识总结-程序员宅基地

文章浏览阅读96次。HTML一、概述 1、什么是 HTML:超文本标记语言,使用一对尖括号括起来,实现特殊的效果定义,用于编写网页(后缀为.html、.htm的文件) 2、编辑:文本编辑工具,都可以编写 HTML页面 记事本、editplus、ultraedit、DW、webstorm、apanta... 运行:浏览器 IE、firefox、chrome、opera、safari 3、HTML是一种解释..._css是文本编标记语言么

k8+容器热备-程序员宅基地

文章浏览阅读946次。安装docker准备nginx(nginx:v3)和keepalived镜像(osixia/keepalived)生成热备配置文件(docker-compose.yml Dockerfile nxinx.conf keepalived.conf check_nginx.conf)docker-compose.ymlversion: '2'services: keepalive...

随便推点

【情感识别】PNN概率神经网络语音情感识别【含Matlab源码 544期】-程序员宅基地

文章浏览阅读12次。PNN概率神经网络语音情感识别完整的代码,方可运行;可提供运行操作视频!适合小白!

bzoj2594 [Wc2006]水管局长数据加强版 离线+LCT维护边权-程序员宅基地

文章浏览阅读71次。LCT维护边权势把每条边都当成一个点赋予点权,原来的点当然也保留,如果求和点权赋为0,求max点权赋为-INF,如果都要求,那就弄两三个点权。需要注意的是,LCT的link操作必须换根,如果不把x设为根而直接pre[x]=y的话,结果并不是连接x和y而是连接x的splay的根和y。在弹飞绵羊的题中之所以不用换根是因为x本来就是根。#include<bits/stdc++.h&..._lct维护边权

167. 链表求和(add-two-numbers)(c++)----lintcode面试题之链表_add-two-numbers c++-程序员宅基地

文章浏览阅读329次,点赞2次,收藏2次。(一)题目要求:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。(二)示例:给出两个链表 3-&gt;1-&gt;5-&gt;null 和 5-&gt;9-&gt;2-&gt;null,返回 8-&gt;0-&gt;8-&gt;null(三)题解:方法一:/** * Definit..._add-two-numbers c++

面试了一个 46 岁的程序员,我思绪万千_最近一直忙于面试,人事推给了我一份简历,职位是算法工程师,年龄是 46 岁-程序员宅基地

文章浏览阅读567次。转载提示:这是一篇旧文最近一直忙于面试,人事推给了我一份简历,职位是算法工程师,年龄是 46 岁,我揉了揉眼睛后再看看,确实是 46 岁。抱着忐忑的心,我电话面试一番后,还是不觉得他和我们的团队很适合。人都会有同理心,尤其是这么大岁数的程序员还是为了生计来找工作,心还是会隐隐触痛。年龄是多数程序员的天敌,之前没有概念因为生活中样本较少,现在来了一个鲜明的例子,并且还需要自己亲手关闭一扇..._最近一直忙于面试,人事推给了我一份简历,职位是算法工程师,年龄是 46 岁

linux 如何进入刚刚创建的文件夹_linux创建文件夹并进入-程序员宅基地

文章浏览阅读4.5k次。我们知道 linux 下创建文件夹命令是 mkdir一般情况下, 我们期望在创建文件夹后, 并进入该文件夹这里以创建 test 文件夹, 并进入 test 文件夹为例# 创建 test 文件夹, 并进入 test 文件夹mkdir test && cd $_总结: 通过 $_ 获取到上次命令的最后一个参数值即获取 mkdir 最后一个参数值 test, 作为 cd 的参数, 即可进入刚刚创建的文件夹中..._linux创建文件夹并进入

【数据结构】二叉树的建立及先中后序遍历完整C语言代码_二叉树的建立与遍历完整代码-程序员宅基地

文章浏览阅读8.9k次,点赞28次,收藏113次。二叉树的先中后序遍历二叉树的建立先序遍历中序遍历后序遍历程序结果二叉树的建立我们知道,建立一个二叉树,可以写出它的先序遍历,后序遍历,中序遍历。本文根据先序序列建立一个二叉树,以字符#表示空结点。先序序列的二叉树如下图所示。(ABD##E##CF###)比如我们知道这样的一个二叉树想要建立这个二叉树二叉树,我们就要依次从键盘输入 ABD##E##CF###。这样,我们就建立好了一个二叉树,接下来就是输出该二叉树,分别通过先序遍历,中序遍历,后序遍历输出该二叉树。先序遍历//先序遍历void_二叉树的建立与遍历完整代码