Qt如何绘制其GUI组件(基本思想)

How does Qt draw its GUI Components ( Basic Idea )?

本文关键字:组件 GUI 绘制 Qt 何绘制      更新时间:2023-10-16

当我浏览Qt的源代码时,我没有发现它实际上是如何绘制GUI组件的,但我知道它使用OpenGL。

我想知道像Qt这样的GUI库如何绘制其GUI组件(例如:QPushButton,QWidget)?

谁能告诉我一个基本的概念?

在qt项目站点:

Qt正在使用QPainter绘制QtWidgets, QPainter(通常)使用光栅引擎绘制内容。它不使用本机操作系统调用,除了少数例外(例如,文件对话框可以本地绘制或使用QtWidgets)。

QtQuick是使用场景绘制的,所以OpenGL。此外,这里没有本地操作系统调用。

我想你要么是误解了stackoverflow帖子(在计算中"native"一词有几种含义),要么是你的信息来源错误。

好的,那么要明确的是:"原生"我指的是使用原生操作系统控件,就像wxWidgets库所做的那样:要求操作系统绘制原生滚动条或组合框等。Qt不这样做。它自己绘制所有的小部件,只是试图模仿它所运行的操作系统的外观。

但很明显,一些本地操作系统调用在内部发生,为了在屏幕上画一些像素,并打开本地窗口容器。但对于高级UI开发人员来说,这通常一点也不重要。

你有一个明确的选择是小部件应该由CPU还是GPU绘制:小部件可以使用不同的绘画方法(原生,光栅,OpenGL,更多请看这里![qt-project.org]),用户可以选择应该使用哪一个。但是,大多数人不使用它,因为默认设置很好。

谢谢。