我正在用PySide
编写的GUI中的应用程序。我在QMenu
上设置了QPushButton
,并通过QActions
添加了几个QMenu.addAction
。为了进一步向用户解释这些操作,我使用QToolTip
向其中添加了QAction.setToolTip
。
现在,当我运行GUI时,我的QToolTip
将不会显示。下面发布的示例重现了相同的问题,有什么想法吗?
提前致谢
import sys
from PySide import QtGui
class Example(QtGui.QPushButton):
def __init__(self, parent = None):
super(Example, self).__init__(parent)
self.setText('TestMenu')
self.setToolTip('This is a Test Button')
menu = QtGui.QMenu(self)
action_1 = menu.addAction('Action1')
action_1.setToolTip('This is action 1')
action_2 = menu.addAction('Action2')
action_2.setToolTip('This is action 2')
action_3 = menu.addAction('Action3')
action_3.setToolTip('This is action 3')
action_4 = menu.addAction('Action4')
action_4.setToolTip('This is action 4')
self.setMenu(menu)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
app.exec_()
if __name__ == '__main__':
main()
最佳答案
在Qt-5.1或更高版本中,您可以简单地使用QMenu.setToolTipsVisible,菜单项将按预期显示其工具提示(请参阅QTBUG-13663):
menu.setToolTipsVisible(True)
但是,对于Qt-4。*和Qt-5.0,情况有所不同。如果将 Action 添加到工具栏,则会显示其工具提示; ;但是如果将相同的操作添加到
QMenu
,则不会添加,并且没有内置的API可以更改该操作。有两种方法可以解决此问题。一种是改为使用status tips,它将在状态栏中显示菜单项信息。另一种是使用QMenu.hovered信号和QToolTip.showText自己实现菜单项工具提示功能: self.menu = QtGui.QMenu(self)
...
self.menu.hovered.connect(self.handleMenuHovered)
def handleMenuHovered(self, action):
QtGui.QToolTip.showText(
QtGui.QCursor.pos(), action.toolTip(),
self.menu, self.menu.actionGeometry(action))
关于python - 为什么QToolTips不会出现在QMenu的QActions上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21725119/