我一直在使用QT一段时间,我一直在想关于在Windows中绘制GUI的方式.
是真的使用QPainter自行绘制所有按钮,编辑框,组合框,复选框,选项卡等,还是以某种方式使用本机窗口小部件?
它可以做自定义样式和蒙皮的事实表明它确实使用QPainter绘制了所有内容,但是如何才能维护这种代码?Qt开发人员是否真的对窗口系统的整个功能进行了逆向工程?这有点浪费吗?
另一个证据是,如果我在Qt gui上使用Spy ++,那么所有窗口都会显示一个等于"QWidget"的类名.如果它使用原生小部件不应该是"按钮","静态"等?
在其他平台上怎么样?它在Max OSX中也是这样做的吗?
在Windows XP和Vista上(显示设置设置为Classic时除外),通过QWindowsXPStyle和QWindowsVistaStyle的小部件绘画实际上使用低级主题特定绘图(uxtheme.dll),以便例如按钮看起来像本机按钮.在旧版本的Windows上,Qt通过QWindowsStyle模拟小部件绘制.
Mac OS X上的情况类似,QMacStyle依赖于外观管理器来委托窗口小部件的低级绘制.
对于X11,通常Qt使用自己的风格绘画并且具有模仿某些窗口系统的某些样式,例如QMotifStyle具有与Motif类似的外观并且没有实际加载并且依赖于Motif环境.但是当在GNOME下运行时,可选择Qt可以通过QGtkStyle使用原生Gtk +主题.