Qt开发:Qt GUI模块——简介

Qt GUI模块为窗口系统集成,事件处理,OpenGL和OpenGL ES集成,2D图形,基本图像,字体和文本提供类。 这些类由Qt的用户界面技术内部使用,也可以直接使用,例如使用低级别的OpenGL ES图形API编写应用程序。

对于编写用户界面的应用程序开发人员来说,Qt提供了更高层次的API,比如Qt Quick,比Qt GUI模块中的启动器更合适。



一、概述

要包含模块类的定义,请使用以下指令:

 #include <QtGui>

如果您使用qmake构建项目,则默认包含Qt GUI。 要禁用Qt GUI,请将以下行添加到.pro文件中:

 QT -= gui



二、Application Windows

Qt GUI模块中最重要的类是QGuiApplication和QWindow。 想要在屏幕上显示内容的Qt应用程序需要使用这些应用程序。 QGuiApplication包含主事件循环,其中来自窗口系统和其他源的所有事件都被处理和分派。 它还处理应用程序的初始化和最终化。

QWindow类表示底层窗口系统中的一个窗口。 它提供了许多虚拟函数来处理来自窗口系统的事件(QEvent),如触摸输入,曝光,焦点,击键和几何变化。



三、2D Graphics

Qt GUI模块包含2D图形,图像,字体和高级版式的类。

用曲面类型QSurface :: RasterSurface创建的QWindow可以与QBackingStore和QPainter,Qt高度优化的2D矢量图形API结合使用。 QPainter支持绘制线,多边形,矢量路径,图像和文本。 有关更多信息,请参见绘制系统和栅格窗口示例。

Qt可以使用QImage和QPixmap类加载和保存图像。 默认情况下,Qt支持最常见的图像格式,包括JPEG和PNG等。 用户可以通过QImageIOPlugin类添加对其他格式的支持。 有关更多信息,请参阅读写图像文件。

Qt中的排版是用QTextDocument完成的,QTextDocument使用QPainter API和Qt的字体类,主要是QFont。 可以使用喜欢更多低级别API的文本和字体处理的应用程序,例如QRawFont和QGlyphRun等。



四、OpenGL and OpenGL ES Integration

QWindow支持使用OpenGL和OpenGL ES进行渲染,具体取决于平台支持的内容。 通过将QWindow的表面类型设置为QSurface :: OpenGLSurface,使用QSurfaceFormat选择格式属性,然后创建QOpenGLContext来管理本机OpenGL上下文,可以启用OpenGL渲染。 另外,Qt还有QOpenGLPaintDevice,它可以使用OpenGL加速的QPainter渲染,以及简化OpenGL代码编写的便利类,并且隐藏扩展处理的复杂性以及OpenGL ES 2和桌面OpenGL之间的差异。 便利类包括QOpenGL函数,它允许应用程序使用桌面OpenGL上的所有OpenGL ES 2函数,而无需手动解析OpenGL函数指针,从而允许跨平台开发针对移动或嵌入式设备的应用程序,以及一些包装本机OpenGL的类 功能更简单的Qt API:

QOpenGLBuffer

QOpenGLFramebufferObject

QOpenGLShaderProgram

QOpenGLTexture

QOpenGLDebugLogger

QOpenGLTimerQuery

QOpenGLVertexArrayObject

最后,为了更好地支持OpenGL的新版本(3.0及更高版本),还提供了一个版本化的函数包装机制:QOpenGLFunction_N_N类的系列公开了给定OpenGL版本和配置文件中的所有函数,可以轻松开发 桌面应用程序依赖于现代桌面型OpenGL功能。

有关更多信息,请参阅OpenGL窗口示例。

Qt GUI模块还包含一些数学类,以帮助进行与3D图形相关的最常见的数学运算。 这些类包括QMatrix4x4,QVector4D和QQuaternion

使用QSurface :: OpenGLSurface创建的QWindow可以与QPainter和QOpenGLPaintDevice结合使用,通过牺牲一些视觉质量来让OpenGL硬件加速2D图形。



五、Qt GUI Prior to Qt 5.0

在Qt 5.0之前,Qt GUI模块是Qt中与图形用户界面有关的所有东西的整体容器,包括Qt构件集,项目视图,图形视图框架以及打印。 从Qt 5开始,这些类已被移至Qt Widgets模块。 打印已转移到Qt打印支持模块。 请注意,这些模块可以从Qt安装中排除。

Qt GUI现在只包含一小组启动器,这些启动器通常对所有图形应用程序都有用。


  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于QT绘图系统,我可以为您提供一些基本的介绍和使用方法。 QT提供了一套强大的绘图系统,可以用来绘制各种图形、图表、文本、图像等等。QT的绘图系统主要由以下几个类组成: 1. QPainter:绘图类,用于绘制各种图形、图像、文本等。 2. QPen:画笔类,用于设置绘图的线条样式、颜色、粗细等。 3. QBrush:画刷类,用于设置绘图的填充样式、颜色等。 4. QFont:字体类,用于设置绘图的字体、大小、样式等。 5. QRect和QRectF:矩形类,用于表示矩形区域的位置和大小。 6. QImage:图像类,用于表示位图图像。 使用QT绘图系统进行绘图主要有两种方式,一种是在QWidget或QGraphicsView等控件的paintEvent事件中进行绘制,另一种是创建QPixmap或QImage等图像对象,然后使用QPainter在图像上进行绘制。 下面是一个简单的示例代码,演示了如何在QWidget中使用QT绘图系统进行绘制: ```cpp void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); // 设置画笔和画刷 QPen pen(Qt::red, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); QBrush brush(Qt::yellow, Qt::SolidPattern); painter.setPen(pen); painter.setBrush(brush); // 绘制矩形和椭圆 QRect rect(100, 100, 200, 100); painter.drawRect(rect); painter.drawEllipse(rect); // 绘制文本 QFont font("Arial", 20); painter.setFont(font); painter.drawText(rect, Qt::AlignCenter, "Hello, QT!"); } ``` 在这个示例代码中,我们在QWidget的paintEvent事件中创建了一个QPainter对象,然后设置了画笔和画刷,接着使用QRect定义了一个矩形区域,并使用drawRect和drawEllipse方法在该区域上绘制了矩形和椭圆。最后,使用setFont和drawText方法在矩形区域中央绘制了一段文本。 当然,QT绘图系统的功能远不止于此,您可以根据需要使用更多的API进行绘制。希望这个简单的介绍可以帮助您更好地了解和使用QT的绘图系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值