当前位置: 首页 > article >正文

Qt 窗口类的继承关系和作用

核心基类

[1] QObjectQt中许多类的基类,支持Qt对象模型,包括信号和槽机制、对象树和事件系统等。虽然它本身不是直接用于创建窗口的,但它是许多窗口和控件类继承链中的重要一环。

注:如果你创建了一个自定义类,并希望它支持信号和槽,那么你的类应该继承自 QObject(或其子类)。

//自定义类 frmCouple 继承自 QMainWindow 类(QObject子类)
class frmCouple : public QMainWindow
{
    Q_OBJECT
	…
};

[2] QPaintDevice:所有可以绘制对象的基类。它定义了一个用于绘图的设备接口,但本身不直接提供绘图功能,而是由继承自它的类(如QWidget)来实现具体的绘图逻辑。

主流窗口类

QMainWindow

  • 用途:QMainWindow是创建主窗口的标准类。它提供了一个框架,用于包含菜单栏(menu bar)、工具栏(tool bars)、状态栏(status bar)、停靠窗口(dock widgets)以及一个中心窗口(central widget),后者通常用于放置其他控件,如QTextEditQPushButton等。
  • 特点:QMainWindow非常适合需要这些标准窗口元素的应用程序。它提供了对这些元素的内置支持,并允许你通过Qt Designer或代码来管理它们。

QDialog

  • 用途:QDialog是创建对话框的基类。对话框是弹出式窗口,用于与用户进行交互,如请求输入信息、显示警告或错误消息等。
  • 特点:QDialog提供了模态(modal)和非模态(non-modal)对话框的支持。模态对话框会阻塞其他窗口的输入,直到该对话框被关闭;非模态对话框则允许用户与其他窗口交互。

QWidget

  • 用途:QWidget是所有用户界面对象的基类。虽然你可以直接从QWidget派生来创建自定义窗口,但通常建议使用QMainWindowQDialog,因为它们提供了更多的功能和更方便的窗口管理。
  • 特点:QWidget提供了窗口系统的基本功能,如大小调整、移动、显示和隐藏等。但是,如果你需要的是一个不包含菜单栏、工具栏或状态栏的简单窗口,或者你想要完全控制窗口的布局和外观,那么从QWidget派生可能是一个好选择。

注意

        Qt 所有的窗口类都直接或间接的继承自QObject。而不是所有的 Qt 类都继承自 QObject。例如,一些用于数据处理的类(如 QVectorQMap 等)是模板类,它们不继承自 QObject 


http://www.kler.cn/a/322562.html

相关文章:

  • gitlab容器的迁移(部署)并配置自动备份
  • Uni-APP+Vue3+鸿蒙 开发菜鸟流程
  • Ubuntu22.04 安装mysql8 无法修改端口及配置的问题 坑啊~~~~
  • 3356. 零数组变换 Ⅱ
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • Javascript——设计模式(一)
  • 语言模型发展史
  • 戴尔PowerEdge R840服务器亮黄灯 不开机
  • 一文了解智能无感知验证码
  • ios swift5 UITextView占位字符,记录限制字数
  • MATLAB中的模型预测控制(MPC)实现详解
  • 我Github的问题解决了!
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.3-2.4
  • 论文阅读:Omni-Kernel Network for Image Restoration
  • seL4 IPC(五)
  • (17)数据库neo4j数据备份
  • 鸿蒙​​​​​​保障应用开发安全的技术措施
  • Elasticsearch案例
  • Vue 23进阶面试题:(第六天)
  • 力扣面试150 寻找峰值 二分
  • msvcr100.dll丢失的解决方法,六种解决msvcr100.dll丢失使用技巧
  • 黄金短线交易策略:波动中的高效盈利之法
  • Python精选200Tips:176-180
  • Java中的Junit、类加载时机与机制、反射、注解及枚举
  • CMake set_property设置全局变量属性
  • 基于TSN的实时通信网络延迟评估技术