Qt QWidget、QDialog、QMainWindow的区别

QWidget

QWidget是Qt框架中最基础的窗口类,可以理解为用户界面的最基本单元。QWidget类提供了一个空白窗口,可以通过继承该类来创建自定义的窗口类。QWidget类提供了基本的窗口属性和方法,如大小、位置、标题、图标等。

QDialog

QDialog是QWidget类的子类,用于创建对话框窗口。对话框是指与用户进行交互的特殊窗口,例如提示信息、选择项、输入框等。QDialog类提供了一些常用的对话框窗口样式,如消息框、输入框、文件选择框等。

模态和非模态: 对话框可以分为模态对话框和非模态对话框。模态对话框在显示时会阻止用户与其他窗口进行交互,用户只能与当前的对话框交互。非模态对话框则可以与其他窗口并行使用。可以通过setModal()方法设置对话框的模态性。

对话框结果: 对话框可以返回一个结果给调用方,表明用户的操作或选择。可以通过QDialog的exec()方法来显示对话框,并通过QDialog::AcceptedQDialog::Rejected两个常量来表示用户的接受或拒绝操作。

QMainWindow

QMainWindow同样是QWidget类的子类,用于创建主窗口。主窗口一般是应用程序的顶级窗口,通常包含菜单栏、工具栏、状态栏等控件。QMainWindow类提供了一些用于创建主窗口的特殊功能,如设置中心部件、状态栏、工具栏等。

下图是QMainWindow的框架图:

不支持创建没有central widget的主窗口。必须有一个central widget。

它们的区别如下

功能上的区别:

  • QWidget是最基础的窗口类,没有提供特殊的窗口功能;
  • QDialog是用于创建对话框窗口,提供了一些常用的对话框样式;
  • QMainWindow是用于创建主窗口,提供了一些用于创建主窗口的特殊功能。

使用场景的区别:

  • QWidget适用于创建简单的窗口,例如应用程序中的普通窗口;
  • QDialog适用于创建需要与用户进行交互的对话框窗口;
  • QMainWindow适用于创建具有菜单栏、工具栏、状态栏等整体布局的主窗口。

继承关系的区别:

QDialog和QMainWindow都是QWidget的子类,因此它们都继承了QWidget的特性和功能。但是QMainWindows具有一些额外的特性,例如中心部件管理、状态栏管理等。 综上所述,QWidget是最基础的窗口类,而QDialog和QMainWindow是QWidget的子类,分别用于创建对话框窗口和主窗口。它们在功能和使用场景上有所区别。

相关推荐

Qt QDialog简介_qt dialog-CSDN博客

【精选】Qt QTreeWidget 详解-CSDN博客

相关推荐
先知后行。2 小时前
QT音视频
开发语言·qt·音视频
钱彬 (Qian Bin)3 小时前
企业级实战:构建基于Qt、C++与YOLOv8的模块化工业视觉检测系统(基于QML)
c++·qt·yolo·qml·工业质检·qt 5.15.2
月月吃喝6 小时前
【PyQt5】嵌套多线程数据交互实现
开发语言·qt·交互
汪宁宇8 小时前
giflib5.2.2 在Qt与VS C++中实现Gif缩放示例
开发语言·c++·qt
求一个demo8 小时前
Qt5.14.2配置MSVC2017
开发语言·qt
枫叶丹410 小时前
【Qt开发】输入类控件(二)-> QTextEdit
开发语言·qt
先知后行。13 小时前
QT实现计算器
开发语言·qt
掘根13 小时前
【Qt】常用控件3——显示类控件
开发语言·数据库·qt
GUIQU.13 小时前
【QT】嵌入式开发:从零开始,让硬件“活”起来的魔法之旅
java·数据库·c++·qt
feiyangqingyun20 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg