【问题标题】: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 覆盖的末尾解决了这个问题。很抱歉错误,感谢您的帮助!

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2015-03-30
        • 1970-01-01
        • 2013-06-16
        相关资源
        最近更新 更多