【问题标题】:Is the Qt 5 dark Fusion theme available for Windows?Qt 5 dark Fusion 主题是否可用于 Windows?
【发布时间】:2013-02-08 18:07:00
【问题描述】:

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

【问题讨论】:

    标签: qt themes stylesheet qt5


    【解决方案1】:

    我确定你已经找到了,但是,正如 TheBootro 所说,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,所以我们可以使它功能完整。

    【讨论】:

      【解决方案2】:

      这是我的深色调色板:

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

      【讨论】:

      • 真不错的主题!我可以在我的一个项目中使用它吗?你能授权吗?麻省理工还是什么的?或者我可以复制过去然后将其作为 MIT 许可吗?当然,所有学分都会归您所有。
      • 刚刚注意到您已经在your website 获得了麻省理工学院的许可!谢谢!我会使用它并给你适当的学分。
      • 非常漂亮的深色主题!
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 2020-05-01
        • 2021-07-17
        • 2011-03-20
        相关资源
        最近更新 更多