Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt C++;?如果可用,则主题为深色或浅色_C++_Qt - Fatal编程技术网

C++ 如何在Qt C++;?如果可用,则主题为深色或浅色

C++ 如何在Qt C++;?如果可用,则主题为深色或浅色,c++,qt,C++,Qt,我有一个基于Qt的文本编辑器程序。它的默认主题是黑色。我想添加一个功能,当用户为switchtheme()选择QAction时,主题应切换为亮,图标也应根据亮/暗进行更改。在我的qrc文件中,我设置了如下结构 :/images |--> /theme_dark/ |--> /theme_light/ 图标文件名在两个目录中保持相同 void MainWindow::switchTheme(const QString &themeName) { //themeName w

我有一个基于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()?
}
问题是深色图标在深色主题上看起来不好,而浅色图标在浅色主题上看起来不好。我想知道如何以高效的方式进行此操作。

您可以使用:


实际上,在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