Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++ 设置QStyleSheet后如何获取QWidget背景色_C++_Qt_Qtstylesheets_Qstylesheet_Qpalette - Fatal编程技术网

C++ 设置QStyleSheet后如何获取QWidget背景色

C++ 设置QStyleSheet后如何获取QWidget背景色,c++,qt,qtstylesheets,qstylesheet,qpalette,C++,Qt,Qtstylesheets,Qstylesheet,Qpalette,我有我的桌面QApplication(Qt5.9),在它上我成功地使用样式表设置了样式。在运行时,每个QWidget看起来都像预期的那样样式正确。 我需要知道的是特定样式小部件的背景色,比如说QTooltip 我尝试了QWidget::palette方法,但得到的颜色看起来像是我要求的QPalette::ColorRole的系统默认颜色。 此外,建议在使用样式表时不要使用此方法 所以。。。更一般地说,如何查询通过样式表定义的小部件属性?您不能直接访问样式表的各个属性。您可以做的是检索样式表,然后

我有我的桌面QApplication(Qt5.9),在它上我成功地使用样式表设置了样式。在运行时,每个QWidget看起来都像预期的那样样式正确。
我需要知道的是特定样式小部件的背景色,比如说QTooltip

我尝试了QWidget::palette方法,但得到的颜色看起来像是我要求的QPalette::ColorRole的系统默认颜色。
此外,建议在使用样式表时不要使用此方法


所以。。。更一般地说,如何查询通过样式表定义的小部件属性?

您不能直接访问样式表的各个属性。您可以做的是检索样式表,然后需要对其进行解析并找到您要查找的属性(
some\u widget->styleSheet()
将以
QString
的形式返回它)

如果您不想这样做,并且希望直接访问调色板,则必须使用该调色板而不是样式表来更改颜色

示例代码:如何使用调色板而不是样式表设置代码的样式:

QPalette px;
px.setColor(QPalette::Text, QColor(255, 255, 255)); // Set text color to white
px.setColor(QPalette::Base, QColor(0, 0, 0)); // Set background to black
some_widget->setPalette(px);

不能直接访问样式表的各个属性。您可以做的是检索样式表,然后需要对其进行解析并找到您要查找的属性(
some\u widget->styleSheet()
将以
QString
的形式返回它)

如果您不想这样做,并且希望直接访问调色板,则必须使用该调色板而不是样式表来更改颜色

示例代码:如何使用调色板而不是样式表设置代码的样式:

QPalette px;
px.setColor(QPalette::Text, QColor(255, 255, 255)); // Set text color to white
px.setColor(QPalette::Base, QColor(0, 0, 0)); // Set background to black
some_widget->setPalette(px);

Qt根据您的QS生成
QProxyStyle
的特殊实例。Qt根据您的QS生成
QProxyStyle
的特殊实例。没有办法扭转这种局面。