首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStatusBar消息在菜单悬停时消失

QStatusBar消息在菜单悬停时消失
EN

Stack Overflow用户
提问于 2014-07-11 10:04:50
回答 5查看 4K关注 0票数 7

我有一个非常基本的QMainWindow应用程序,它包含一个menubar和一个statusbar。当我悬停在菜单上时,状态消息就消失了。更准确地说,状态消息被清除。我不知道是什么导致了这种行为,但它导致了一个非常困难的解决办法,我希望这是微不足道的行为。

这是有问题的,原因如下:我可以通过向QLabel小部件添加一个QStatusBar小部件来使消息永久化,但之后我得到了尴尬的边框。我不想要边境。我知道如何移除边界的唯一方法是通过QStatusBar.setStyleSheet()。我在我的配色方案中使用调色板,而不是样式表,因此修改样式表会扰乱其他颜色。当我通过样式表进行修改时,我也无法恢复原始的statusBar QLabel颜色。我不是最好的使用样式表的人。

是否有办法防止菜单交互清除状态消息?如果没有,在添加一个StatusBar小部件同时保留我的调色板(也许不是通过样式表)时,有没有办法从QLabel中删除边框?

代码语言:javascript
复制
#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class win(QMainWindow):
    def __init__(self,parent=None):
        super(win,self).__init__(parent)
        self.menubar = QMenuBar(self)
        self.fileMenu  = QMenu("File")
        self.exitAction = QAction("Exit",self)
        self.fileMenu.addAction(self.exitAction)
        self.menubar.addMenu(self.fileMenu)   
        self.statusBar().showMessage("Hello")
        self.connect(self.exitAction,SIGNAL("triggered()"), self.close)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    GUI = win()
    GUI.show()
    app.exec_()
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-07-11 12:43:10

基本上,您悬停在上面的每个小部件都会将状态栏文本设置为它们的statusTip属性,即使该属性是空字符串。

对于QMenu,文本存储在menuAction操作状态提示中,因此,您可以有一个文本,而不是使用如下内容清除状态栏:

代码语言:javascript
复制
self.fileMenu.menuAction().setStatusTip("File Menu is hovered")

为了防止更改状态栏,您可能可以在状态栏上安装一个eventFilter并过滤掉所有的QStatusTipEvent

票数 4
EN

Stack Overflow用户

发布于 2016-06-14 22:12:07

我遇到了同样的问题,我找到了另一种方法,就是创建一个新的QLabel

代码语言:javascript
复制
self.myMessage = QtGui.QLabel()
self.myMessage.setText("Hello")

并将其作为小部件添加到左边的状态栏中。

代码语言:javascript
复制
self.statusBar.addWidget(self.myMessage)

或者在右边

代码语言:javascript
复制
self.statusBar.addPermanentWidget(self.myMessage)
票数 8
EN

Stack Overflow用户

发布于 2020-01-26 00:02:38

只是为了更新Lazywii关于使用QLabel的答案。这段代码并没有完全按照原样工作,所以自2016年以来可能发生了一些变化,但在2020年PyQt5上起作用的是:

代码语言:javascript
复制
    self.myMessage = QtWidgets.QLabel()
    self.myMessage.setText("My message not affected by tooltips from hovering")

    self.statusbar.addWidget(self.myMessage)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24695200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档