【问题标题】:Change cursor appearance in delegate更改委托中的光标外观
【发布时间】:2019-11-09 00:00:59
【问题描述】:

我正在创建一个显示可点击文本的委托。为了向用户表明文本是可点击的,我想在光标悬停在分配给代表的单元格上时更改光标的外观。

我看到有solutions 解决此类问题,但这些似乎都涉及对表模型或视图代码的更改,而不是委托代码。 (链接的解决方案在委托中不起作用,因为当光标未悬停在分配给委托的单元格上时委托不会收到任何事件,因此一旦光标离开,将无法恢复标准光标外观细胞。)

如果在不同的表中使用时有一个保持此功能的委托会很好。

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案1】:

    一位同事给了我一个很好的解决方案来解决这个问题。初始化委托时,应将关联的视图作为其父级提供。然后,代理可以将自己安装为视图视口的事件过滤器。完成此操作后,您可以定义一个 eventFilter() 方法,该方法甚至可以在使用委托的单元格边界之外捕获事件,这将允许您在光标离开单元格时修改光标的外观。

    class CursorDelegate(QtWidgets.QStyledItemDelegate):
        def __init__(self, parent):
            super().__init__(parent)
            parent.setMouseTracking(True)
            parent.viewport.installEventFilter(self)
    
        def eventFilter(self, viewport, event):
            ...
    

    从代表那里进入这样的视图可能是一种糟糕的形式,但这是我能找到的最佳解决方案。

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 2016-02-26
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多