首页 文章

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

提问于
浏览
6

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

3 回答

  • 2

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

    我找到了重新设计的调色板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,因此我们可以使其功能完整 .

  • 13

    这是我的黑调:

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

  • 3

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

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

相关问题