Qt/QML编程之路:QWidget和QOBJECT的不同之处(37)

开始使用Qt的工程师,要有个思想准备,标准的Application或者说Windows窗口类的工程和QML是不同的,很多控件在QML里面是不支持的。要了解QObject、QWidget、QMainWindow几个的不同。为何我会遇到这个问题呢?因为在做OpenGL想实现3D效果的时候,发现OpenGL的示例是基于QWidget的,而想在QML下实现遇到了困难,其基于QGLWidget类都是继承自QWidget。

几个基本概念:

QObject是Qt中最基本的类,所有Qt中的对象都从该基类派生而来。有个标记,就是每次写带信号槽的类必须带。它是最顶级的,关键也是Qt元对象系统的重要概念,或者说很多QML中的类继承自它,继承了它就可以利用Qt信号槽、事件处理机制和属性等功能。

QWidget是Qt中所有用户界面类的基类,注意是基类,它提供了空白窗口基本部件如菜单栏、工具栏、状态栏等。提供基本的窗口功能函数和信号,包括绘制、布局、尺寸调整、事件处理等。所以3D绘制是在窗口上绘制的,继承于它,而它属于Windows应用,不能用在QML中。

进一步就涉及到非QUI的Application:

QCoreApplication用于non-GUI的应用程序(不依赖QtGui库)

QApplication用于包含GUI的应用程序(用到QtGui库)。

继承关系:

QApplication->QGuiApplication->QCoreApplication->QObject。

相关推荐

  1. Jetty Tomcat相同不同【自用】

    2024-01-19 19:14:02       34 阅读
  2. 美式英语英式英语不同

    2024-01-19 19:14:02       35 阅读
  3. SRE 与 DevOps 不同

    2024-01-19 19:14:02       59 阅读
  4. 编码解码未来

    2024-01-19 19:14:02       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 19:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 19:14:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 19:14:02       82 阅读
  4. Python语言-面向对象

    2024-01-19 19:14:02       91 阅读

热门阅读

  1. 文心一言 —— 中国的语言大模型

    2024-01-19 19:14:02       53 阅读
  2. 【软件工具】之 Sublime Text

    2024-01-19 19:14:02       60 阅读
  3. 《设计模式的艺术》笔记 - 组合模式

    2024-01-19 19:14:02       37 阅读
  4. 开发安全之:SQL Injection

    2024-01-19 19:14:02       50 阅读
  5. RockerMQ发送消息流程

    2024-01-19 19:14:02       61 阅读
  6. Qt 遍历多个按钮单击信号带参数,绑定到一个槽

    2024-01-19 19:14:02       46 阅读
  7. 对比分析ChatGPT 和文心一言。

    2024-01-19 19:14:02       52 阅读
  8. Vue 做文件的上传和下载

    2024-01-19 19:14:02       52 阅读
  9. 公关部门的OKR

    2024-01-19 19:14:02       56 阅读
  10. Python os模块

    2024-01-19 19:14:02       52 阅读