我使用qtdesigner创建一个主窗口,并使用样式表在按下时生成一个按钮changeimage。但是运行后,背景图像和按下的图像不起作用。在
这是来自Qt Designer的样式表输入:
QPushButton#House1 {
border-image: url(:/img/Crystal_Clear_app_kfm_home.png);
}
QPushButton#House:pressed {
border-image: url(:/img/Search_in_home.png);
}
这是我的主窗口.py公司名称:
^{pr2}$资源文件:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>img/house.png</file>
<file>img/house2.png</file>
<file>img/NM_State_University_logo.png</file>
<file>img/NMlogo_1colorstate_black.png</file>
<file>img/NMlogo_1colorstate_red.tif</file>
<file>img/Crystal_Clear_app_kfm_home.png</file>
<file>img/Gohomenew.png</file>
<file>img/Search_in_home.png</file>
</qresource>
</RCC>
按钮是由我注释掉的行创建的。但无论如何 我用我见过的类似代码创建了另一个按钮。在
###################house 1#######
self.house1 = QPushButton(self.centralwidget)
#self.house1 = QtWidgets.QPushButton(self.centralwidget)
self.house1.setGeometry(QtCore.QRect(61, 21, 32, 19))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.house1.sizePolicy().hasHeightForWidth())
self.house1.setSizePolicy(sizePolicy)
self.house1.setStyleSheet("#House1 {\n"
"border-image: url(:/img/Crystal_Clear_app_kfm_home.png);\n"
"}\n"
"#House:Pressed {\n"
" border-image: url(:/img/Search_in_home.png);\n"
"}")
self.house1.setText("")
self.house1.setObjectName("house1")
####################end #############
问题是由于没有正确使用名称造成的,QStyleSheet使用objectName属性,在您的例子中是QPushButton自住房1公司名称:
在写入该行之前,按钮没有objectName(实际上它的objectName是“”),因此不适合按objectName放置QStyleSheet。在
您应该做的是放置一个objectName,然后您就可以根据它的名称来分配过滤后的QStyleSheet。在
^{pr2}$此属性区分大小写,因此必须与
setObjectName()
完全相同。在如需了解更多信息,请阅读以下内容:
http://doc.qt.io/qt-5/stylesheet-syntax.html
http://doc.qt.io/qt-5/stylesheet-reference.html
相关问题 更多 >
编程相关推荐