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

发布时间:2024年01月18日

开始使用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。

文章来源:https://blog.csdn.net/weixin_49369227/article/details/135665179
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。