获取Qt Widget的变量名称(用于样式表)?

时间:2012-01-24 07:27:30

标签: qt variables pyqt pyqt4

在我的应用程序中,用户点击我的程序的任何小部件(当时是休眠的)并为其选择一种颜色。
然后,此颜色将添加到该特定窗口小部件的样式表中。

然而,当程序结束并再次启动时,我希望该特定小部件保留其样式表 我不想在每个小部件的样式表中使用硬编码。事实上,我甚至不知道哪个特定的小部件有样式表。

我真正想做的是为应用程序提供一个样式表,并将新颜色编码为单击的特定小部件。

(即:如果用户点击了QPushButton并选择了{color:red}样式表, 我想只有QPushButton红色,没有其他人 因此,如果QPushButton的变量名称为'Clicky',则 到QApplications样式表我会补充:
'QPushButton#Clicky {color:red}')

要做到这一点,而不必为每个小部件硬编码,
我必须以某种方式将我的PyQt4小部件的变量名称转换为字符串 我怎么能这样做?

谢谢!

(我已经读过,从他们的值中获取python变量名称非常困难;
是否可以将任何其他形式的ID添加到样式表?)


PyQt4中
python 2.7.2
Windows 7

1 个答案:

答案 0 :(得分:7)

在命名对象之前,首先需要setObjectName(“somename”),然后objectName()才能工作,甚至更好 - findChild()或findChildren()

实施例

头:

QButton foo;

类:

foo = new QButton();
foo.setObjectName("MySuperButton");

然后,最后在你的QSS ..

#MySuperButton { 
     background: black;
}

这也与CSS相似

QButton#MySuperButton {
     background: red;
}

为什么你想要类似地设置多个对象名称(对于不同的对象),或者只使用具有特定名称的一种类型的窗口小部件的粒度的逻辑也与CSS非常相似。