我试图做这样的事情:
QPushButton[text=""] {
background-color: rgb(255, 0, 0);
}
QPushButton {
background-color: rgb(0, 0, 0);
}
基本上,我的一些QPushButtons有文字,有些不是,我想要设计与那些没有文字的文本不同的风格。
如果我打开一个实际的字符串值,即
,这是有效的QPushButton[text="Ok"] {
background-color: rgb(255, 0, 0);
}
然后任何按钮说" Ok"有红色背景。但是,如果没有文字的按钮我会传递什么?
答案 0 :(得分:2)
此样式表适用于我(Linux,Qt 5.3):
QPushButton[text] {
background-color: "green";
}
QPushButton[text="some text"] {
background-color: "red";
}
QPushButton {
background-color: "blue";
}
答案 1 :(得分:0)
上次编辑:9/8/2014 1:05
好的,对不起我误解了这个问题。 我有同样的问题来设置空文本。但它适用于Qt Designer。 (为什么?我不知道。)而且我找不到其他财产。
我有解决方案,我通过继承它在isEmpty
中创建我的属性“QPushButton
”。并且,添加属性,像这样;
import sys
from PyQt4 import QtCore, QtGui
class customQPushButton (QtGui.QPushButton):
def setPropertyIsStringEmpty (self, text):
self.setProperty('isEmpty', QtCore.QVariant(False if len(text) > 0 else True))
def setText (self, text):
self.setPropertyIsStringEmpty(text)
QtGui.QPushButton.setText(self, text)
class exampleQMainWindow (QtGui.QMainWindow):
def __init__ (self):
super(exampleQMainWindow, self).__init__()
self.testQPushButton = customQPushButton(self)
self.testQPushButton.setText('')
self.setStyleSheet ('''
QPushButton {
color: rgb(255, 255, 255);
}
QPushButton[text="Ok"] {
background-color: rgb(255, 0, 0);
}
QPushButton[isEmpty=true] {
background-color: rgb(0, 0, 255);
}
''')
self.setCentralWidget(self.testQPushButton)
self.testQPushButton.keyPressEvent = self.keyPressEvent
app = QtGui.QApplication([])
window = exampleQMainWindow()
window.show()
sys.exit(app.exec_())
您可以创建新对象。但是,如果由Qt Designer创建,我必须通过调用setPropertyIsStringEmpty (self, text)
刷新属性。
此致
MESSAGE BY 9/8/2014 1:05 :这是我以前的帖子。如果没用,请避免使用它们。
有可能如果你创建了
style sheet
模式并把它放了 您想要设置的代码或语句中的style sheet
。我有例子,这个例子显示我处理箭头(不仅仅是向下键) 按键事件并设置按钮的新颜色;
import sys from PyQt4 import QtCore, QtGui ENUM_COLOR_RED = 0 ENUM_COLOR_GREEN = 1 ENUM_COLOR_BLUE = 2 def getStyleSheetQPushButtonRed (): return ''' QPushButton { color: rgb(255, 255, 255); background-color: rgb(255, 0, 0); } ''' def getStyleSheetQPushButtonGreen (): return ''' QPushButton { color: rgb(255, 255, 255); background-color: rgb(0, 255, 0); } ''' def getStyleSheetQPushButtonBlue (): return ''' QPushButton { color: rgb(255, 255, 255); background-color: rgb(0, 0, 255); } ''' class exampleQMainWindow (QtGui.QMainWindow): def __init__ (self): super(exampleQMainWindow, self).__init__() self.testQPushButton = QtGui.QPushButton('KM', self) self.setCentralWidget(self.testQPushButton) self.testQPushButton.keyPressEvent = self.keyPressEvent def setText (self, text, color): styleSheet = { ENUM_COLOR_RED : getStyleSheetQPushButtonRed, ENUM_COLOR_GREEN : getStyleSheetQPushButtonGreen, ENUM_COLOR_BLUE : getStyleSheetQPushButtonBlue } [color]() self.testQPushButton.setText(text) self.testQPushButton.setStyleSheet(styleSheet) def keyPressEvent (self, eventQKeyEvent): key = eventQKeyEvent.key() if key == QtCore.Qt.Key_Left: self.setText('LEFT', ENUM_COLOR_RED) elif key == QtCore.Qt.Key_Up: self.setText('UP', ENUM_COLOR_GREEN) elif key == QtCore.Qt.Key_Right: self.setText('RIGHT', ENUM_COLOR_BLUE) app = QtGui.QApplication([]) window = exampleQMainWindow() window.show() sys.exit(app.exec_())
优点:您可以在按钮中添加与颜色无关的文字。
缺点:您有颜色
style sheet
随时都有设置事件声明。
这对于实现样式表很有用,我希望有帮助;
参考:http://qt-project.org/doc/qt-4.8/stylesheet-syntax.html
此致