Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Qt 更新小部件的ObjectName不会自动更新样式_Qt_Qtstylesheets - Fatal编程技术网

Qt 更新小部件的ObjectName不会自动更新样式

Qt 更新小部件的ObjectName不会自动更新样式,qt,qtstylesheets,Qt,Qtstylesheets,在我的应用程序中,整个应用程序的样式表取自加载到应用程序中的资源文件 我在这里为QListWidget定义了两个样式表: QListWidget#Good{ ..some color properties } QListWidget#Bad { ..soem different color properties } 在某种形式上,我的QListWidget的对象名是“Good”,因此它遵循#Good样式。在运行时,我有一种情况,我想将它“设置ObjectName”为“Bad”,并在UI中立即

在我的应用程序中,整个应用程序的样式表取自加载到应用程序中的资源文件

我在这里为QListWidget定义了两个样式表:

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}
在某种形式上,我的QListWidget的对象名是“Good”,因此它遵循#Good样式。在运行时,我有一种情况,我想将它“设置ObjectName”为“Bad”,并在UI中立即更改样式

我注意到两件事:

  • 仅仅调用“SetObjectName(“Bad”);”不会改变方法的样式
  • 只有当从包含QListWidget的小部件的构造函数调用时,“SetObjectName(“Bad”);”才会起作用
  • 显然,我错过了一些“更新风格”阶段。注意,代码中不能有“setStyleSheet”,它必须来自QSS文件


    我遗漏了什么?

    解决了这个问题。电话:

    style()->unpolish(theWidget);
    style()->polish(theWidget);
    
    在更改objectName(
    setObjectName
    )后,在我的小部件上实现了这一技巧