Qt 5 dark Fusion主题适用于Windows吗?

时间:2013-02-23 01:00:47

标签: qt themes stylesheet qt5

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

3 个答案:

答案 0 :(得分:13)

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

我找到了调色板here的重新设计。它根本不完整!

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);

编辑:我创建了一个gist,因此我们可以将其设为完整功能。

答案 1 :(得分:4)

这是我的黑调:

// 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

答案 2 :(得分:2)

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

所以你基本上所要做的就是使用工具或QtProject.conf文件手动调整Qt5应用程序的调色板,不要忘记用“-style fusion”参数启动你的应用程序,因为elsewere在ubuntu上,它是从GTk +外观模拟开始的。