QGraphicsProxyWidget内的小部件的工具提示

时间:2018-07-16 14:07:08

标签: python qt pyqt pyside qgraphicsscene

我有一个with open(...) as stream: original = sys.stdout sys.stdout = stream try: ... finally: sys.stdout = original ,我在QGraphicsScene内添加了QPushButtons。有没有一种方法可以显示这些按钮的工具提示? QGraphicsProxyWidgets有效,但是当我将鼠标悬停在按钮上时,什么也没有出现。我需要在setToolTip上指定一些标志吗?

按钮创建代码的简化版本:

QGraphicsScene/View

谢谢!

2 个答案:

答案 0 :(得分: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_())

enter image description here

答案 1 :(得分:0)

遗憾的是,在代理上设置工具提示也没有用,但是一位同事在我的代码中进行了进一步研究,发现为什么代理和按钮的工具提示都不起作用:我在QGraphicsView mouseMoveEvent上设置了替代项,这可能会破坏悬停事件。添加...

else :
    super(CustomGraphicsView, self).mouseMoveEvent(event)

...在mouseMoveEvent覆盖结尾处解决了该问题。对不起,很抱歉,谢谢您的帮助!