如何在Qt C ++中基于主题更改图标?如果可用的主题是暗或亮

时间:2014-11-08 08:40:24

标签: c++ qt

我有一个基于Qt的文本编辑器程序。它的默认主题是黑暗的。我想添加一个功能,当用户为switchtheme()选择QAction时,主题应切换到亮,图标也应根据亮/暗变化。在我的qrc文件中,我设置了如下结构

:/images
|--> /theme_dark/
|--> /theme_light/ 

两个目录中的图标文件名保持相同。

void MainWindow::switchTheme(const QString &themeName) 
{
//themeName will be "light" or "dark"

    QString image_path = ":/images/theme_"+themeName+"/"; 

    //Now maybe we can create a QStringList and append(filenames) to it.
    //Find all QActions in the toolbar and setIcon()?
}

问题是暗色图标在黑暗主题上看起来不太好,而浅色图标在浅色主题上看起来不太好。我想知道如何以有效的方式做到这一点。

1 个答案:

答案 0 :(得分:4)

您可以使用QFileSelector

QFileSelector selector;
QStringList extraSelectors;
extraSelectors << "theme_dark";
selector.setExtraSelectors(extraSelectors);
QString image = selector.select(":/images/myImage.png");

Qrc文件结构应该是:

:/images
|--> /+theme_dark/
|-----> myImage.png
|--> /+theme_light/
|-----> myImage.png