【问题标题】:Tooltip for widget inside a QGraphicsProxyWidgetQGraphicsProxyWidget 内的小部件的工具提示
【发布时间】:2018-07-16 14:07:07
【问题描述】:
我有一个QGraphicsScene,我在QGraphicsProxyWidgets 中添加了QPushButtons。有没有办法显示这些按钮的工具提示? setToolTip 可以工作,但是当我将鼠标悬停在按钮上时什么也没有出现。我需要在QGraphicsScene/View 上指定一些标志吗?
按钮创建代码的简化版:
class Button(QPushButton):
def __init__(self, scene):
super(Button, self).__init__()
self.proxy = QGraphicsProxyWidget()
self.proxy.setWidget(self)
scene.addItem(self.proxy)
self.setToolTip("tooltip")
提前致谢!
【问题讨论】:
标签:
python
qt
pyqt
pyside
qgraphicsscene
【解决方案1】:
您必须将工具提示设置为QGraphicsProxyWidget。
例子:
from PyQt5 import QtCore, QtWidgets
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
proxy = QtWidgets.QGraphicsProxyWidget()
button = QtWidgets.QPushButton("Press me :)")
proxy.setWidget(button)
proxy.setToolTip("Proxy toolTip")
scene.addItem(proxy)
view.show()
sys.exit(app.exec_())
【解决方案2】:
遗憾的是,在代理上设置工具提示也不起作用,但一位同事在我的代码中进一步查看了一下,发现为什么代理和按钮的工具提示都不起作用:我在 QGraphicsView mouseMoveEvent 上设置了覆盖,这可能打破了悬停事件。添加...
else :
super(CustomGraphicsView, self).mouseMoveEvent(event)
...在mouseMoveEvent 覆盖的末尾解决了这个问题。很抱歉错误,感谢您的帮助!