C++ 如何在Qt C++;?如果可用,则主题为深色或浅色
我有一个基于Qt的文本编辑器程序。它的默认主题是黑色。我想添加一个功能,当用户为switchtheme()选择QAction时,主题应切换为亮,图标也应根据亮/暗进行更改。在我的qrc文件中,我设置了如下结构C++ 如何在Qt C++;?如果可用,则主题为深色或浅色,c++,qt,C++,Qt,我有一个基于Qt的文本编辑器程序。它的默认主题是黑色。我想添加一个功能,当用户为switchtheme()选择QAction时,主题应切换为亮,图标也应根据亮/暗进行更改。在我的qrc文件中,我设置了如下结构 :/images |--> /theme_dark/ |--> /theme_light/ 图标文件名在两个目录中保持相同 void MainWindow::switchTheme(const QString &themeName) { //themeName w
:/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()?
}
问题是深色图标在深色主题上看起来不好,而浅色图标在浅色主题上看起来不好。我想知道如何以高效的方式进行此操作。您可以使用:
实际上,在images/目录中,有用于工具栏的图标。所以我必须单独设置
QAction*act=qobject\u cast(ui->action\u Name)代码>act->setIcon(QIcon(image_path+“image.png”)代码>有没有更快的方法?也许设置图像名称和动作名称会有所帮助?例如,在文本编辑器中有工具栏按钮,当切换主题时,所有的工具按钮也应该改变颜色。@Bhavyanshu您可以使用myToolbar->获得所有操作。然后迭代QList并设置图标:setIcon(QIcon(selector.select(:/images/“+actionsList.at(0.title+”.png)))。在这种情况下,图像名称必须与动作标题相等。切换主题时,应更改外部选择器并重置所有图标。
QFileSelector selector;
QStringList extraSelectors;
extraSelectors << "theme_dark";
selector.setExtraSelectors(extraSelectors);
QString image = selector.select(":/images/myImage.png");
:/images
|--> /+theme_dark/
|-----> myImage.png
|--> /+theme_light/
|-----> myImage.png