Qt 5深色Fusion主题是否适用于Windows



经过一些研究,我发现Qt 5现在提供了一个所谓的Fusion主题,这在他们的一篇博客文章中有描述。我真的很喜欢你在最后一张图中看到的黑色配置的主题,我想在我的应用程序中使用它,但这个配色方案似乎是Unity/Gnome3(看起来像Ubuntu窗口)强制的,所以我很想知道是否有任何可用的样式表或变通方法可以将这个深色版本的主题应用到应用程序中。

我相信你已经找到了,但是,正如TheBootroo所说,Fusion主题是由调色板控制的。

我在这里找到了一个调色板的再现。它根本就不完整!

qApp->setStyle(QStyleFactory::create("Fusion"));
QPalette p = qApp->palette();
p.setColor(QPalette::Window, QColor(53,53,53));
p.setColor(QPalette::Button, QColor(53,53,53));
p.setColor(QPalette::Highlight, QColor(142,45,197));
p.setColor(QPalette::ButtonText, QColor(255,255,255));
p.setColor(QPalette::WindowText, QColor(255,255,255));
qApp->setPalette(p);

编辑:我已经创建了一个要点,这样我们就可以使其功能完整。

这是我的深色调色板:

// set style
qApp->setStyle(QStyleFactory::create("Fusion"));
// increase font size for better reading
QFont defaultFont = QApplication::font();
defaultFont.setPointSize(defaultFont.pointSize()+2);
qApp->setFont(defaultFont);
// modify palette to dark
QPalette darkPalette;
darkPalette.setColor(QPalette::Window,QColor(53,53,53));
darkPalette.setColor(QPalette::WindowText,Qt::white);
darkPalette.setColor(QPalette::Disabled,QPalette::WindowText,QColor(127,127,127));
darkPalette.setColor(QPalette::Base,QColor(42,42,42));
darkPalette.setColor(QPalette::AlternateBase,QColor(66,66,66));
darkPalette.setColor(QPalette::ToolTipBase,Qt::white);
darkPalette.setColor(QPalette::ToolTipText,Qt::white);
darkPalette.setColor(QPalette::Text,Qt::white);
darkPalette.setColor(QPalette::Disabled,QPalette::Text,QColor(127,127,127));
darkPalette.setColor(QPalette::Dark,QColor(35,35,35));
darkPalette.setColor(QPalette::Shadow,QColor(20,20,20));
darkPalette.setColor(QPalette::Button,QColor(53,53,53));
darkPalette.setColor(QPalette::ButtonText,Qt::white);
darkPalette.setColor(QPalette::Disabled,QPalette::ButtonText,QColor(127,127,127));
darkPalette.setColor(QPalette::BrightText,Qt::red);
darkPalette.setColor(QPalette::Link,QColor(42,130,218));
darkPalette.setColor(QPalette::Highlight,QColor(42,130,218));
darkPalette.setColor(QPalette::Disabled,QPalette::Highlight,QColor(80,80,80));
darkPalette.setColor(QPalette::HighlightedText,Qt::white);
darkPalette.setColor(QPalette::Disabled,QPalette::HighlightedText,QColor(127,127,127));
qApp->setPalette(darkPalette);

在这里,您还可以找到一个使用无框架窗口和自定义样式表来扩展深色调色板的强制示例:https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle

AFAIK,Qt5 Fusion主题的颜色完全由调色板控制,而调色板又由系统主题控制。所以在Ubuntu上,你会得到橙色,在Windows上是蓝色。。。

因此,基本上你所要做的就是使用一个工具或QtProject.conf文件手动调整Qt5应用程序的调色板,不要忘记用参数"-风格融合"启动你的应用程序,因为在ubuntu上,它是用GTk+外观模拟启动的。

相关内容

  • 没有找到相关文章

最新更新