Cod*_*Man 5 c++ opengl user-interface qt
当我浏览Qt的源代码时,我没有发现它是如何实际绘制GUI组件的,但我知道它使用的是OpenGL.
我想知道像Qt这样的GUI库如何绘制其GUI组件(例如:QPushButton,QWidget)?
任何人都可以帮我一个基本的想法吗?
在Qt项目站点中:
Qt正在使用QPainter绘制QtWidget,QPainter使用(通常)光栅引擎绘制内容。除了少数例外(例如,可以本地或使用QtWidgets绘制的文件对话框),它没有使用本机OS调用。
QtQuick是使用场景图绘制的,因此是OpenGL。另外,此处没有本机OS调用。
我认为您可能误解了stackoverflow帖子(在计算中“本机”一词有多种含义),或者您的信息来源有误。
好,接下来要澄清:“本机”是指使用本机OS控件,如wxWidgets库那样:要求OS绘制本机滚动条或组合框等。Qt不会这样做。它绘制所有窗口小部件本身,并且仅尝试模仿其运行的操作系统的外观。
但是很明显,某种本机OS调用正在内部深处发生,以便实际上在屏幕上绘制一些像素并打开本机窗口容器。但这通常对高级UI开发人员根本不重要。
您可以选择由CPU还是GPU绘制窗口小部件:窗口小部件可以使用不同的绘制方法(本机,光栅,OpenGL,有关更多信息,请参见此处 [qt-project.org]),并且用户可以选择应该利用哪一个。但是,大多数人不使用它,因为默认设置可以很好地工作。
谢谢。