什么是具有良好换肤能力的跨平台C++ GUI框架?
所以我可以(并赋予用户)自定义 GUI 的能力。
Qt 框架允许使用样式表(使用 css)更改小部件的外观。请参阅:http: //qt-project.org/doc/qt-5.0/qtwidgets/stylesheet.html。
编辑:当您正在寻找类似wxSkin的东西时,首先为什么不首先使用它?
然后,如果您不想使用 wxSkin,请查看 Juce。Qt 的目标绝对不是可主题化的 GUI,尽管窗口掩码和样式表是实现它们的一种方式。Qt-Apps.org 上有QSkingObject 项目,但上次我检查它时发现代码质量很差(当然这是主观和争论的)。
您可以查看具有双重许可证的Juce :GPL 和商业许可证。
Qt (LGPL) 有样式表来设置小部件的样式,但它仍然让操作系统绘制窗口装饰,除非您指示它绘制无框窗口并自己绘制装饰。
但是,在进行蒙皮应用程序之前,请三思而后行。一个典型的例子是Songbird(用 XUL 编写),它使用无框窗口并绘制了自己的标题栏和窗口按钮。然后在许多用户抱怨后,他们退回踏板并切换回系统窗口装饰。
Qt 通过Qt 样式表等提供了方便的支持。Qt 实验室博客有一个示例帖子,可能会给您一个想法。
正如其他人所说,Qt 的样式表运行良好。
您还可以选择通过覆盖 QStyle 来自定义 Qt 中的绘图。您可以允许用户使用插件(导出 QStyle 实现)来使其超级可定制。
(然后,我不知道您的用户是否是 C++ 编码人员......)
我过去使用过Juce(与 Windows、Linux 和 Mac OS X 兼容),它有一个LookAndFeel类(一定很喜欢这个名字),可以让你做到这一点。
我不得不投票给XULRunner,因为它非常容易换肤。但是,它不是纯 C++:应用程序代码是用JavaScript编写的,而扩展可以实现为 C++ XPCOM组件。