我有一个基于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()?
}
问题是暗色图标在黑暗主题上看起来不太好,而浅色图标在浅色主题上看起来不太好。我想知道如何以有效的方式做到这一点。
答案 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