10

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

4

3 回答 3

17

我相信你已经找到了,但是,正如 TheBootro 所说,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);

编辑:我创建了一个要点,以便我们可以使其功能完整。

于 2013-05-09T11:47:48.887 回答
10

这是我的深色调色板:

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

于 2017-08-11T11:55:52.693 回答
3

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

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

于 2013-03-18T08:37:17.290 回答