我正在使用Qt和Python,我有一个主窗口,底部有状态栏.我可以使用QLabel在栏中显示消息,并使用类似于"<font color=\"green\">In progress</font>"QLabel文本的内容设置该消息的颜色.
我还想在状态栏中添加一条临时消息,并为该消息指定一种颜色.但是因为这次不是QLabel(我使用的是QStatusBar :: showMessage只需要一个QString)我不能再改变颜色了.上面的标签无法识别,整个字符串"<font color=\"green\">In progress</font>"显示为灰色.
有没有人有任何想法?
要设置QStatusBar的背景或文本颜色,请在显示消息之前更改它的styleSheet:
self.status.setStyleSheet("QStatusBar{padding-left:8px;background:rgba(255,0,0,255);color:black;font-weight:bold;}")
self.status.showMessage("Error Cannot determine filepath", msecs= 5000)
Run Code Online (Sandbox Code Playgroud)
在init上,将QStatusBar的messageChanged(QString)连接到statusChanged()函数.
def statusChanged(self, args):
'''If there are no arguments (the message is being removed)
change the background back to transparent/ text back to black'''
if not args:
self.status.setStyleSheet("QStatusBar{padding-left:8px;background:rgba(0,0,0,0);color:black;font-weight:bold;}")
Run Code Online (Sandbox Code Playgroud)
Ť
不幸的是,不支持富文本格式。很久以前,这甚至被报道为功能请求,但似乎没有得到足够的重视。QStatusBar::showMessage()
我认为最好的选择是坚持使用纯文本消息或直接操纵现有消息 QLabel。这需要一些额外的工作来处理临时状态更改,因此您可以决定是否值得这样做。