【问题标题】:How to make a custom QStyledItemDelegate selectable in a QListView in PySide/PyQt?如何在 PySide/PyQt 的 QListView 中选择自定义 QStyledItemDelegate?
【发布时间】:2016-01-30 14:46:36
【问题描述】:

作为已解决的previous question 的后续行动,我现在想让这些项目可选择。如前所述,我在视图中激活了各种选择相关的参数,我也在模型的flags-方法中返回core.Qt.ItemIsSelectable。但是option.state & gui.QStyle.State_Selected 仍然没有被填满。非常感谢任何帮助。另请注意链接问题中的最小示例。

【问题讨论】:

    标签: python-2.7 pyqt pyside


    【解决方案1】:

    我自己解决了。问题是,自定义 QStyledItemDelegate 捕获鼠标事件,因此它不会传递给 QListView。所以在QStyledItemDelegate.editor(Event) 中只需要添加一个

    if event.type() == core.QEvent.MouseButtonPress:
        return False
    

    现在可以在使用option.state & gui.QStyle.State_Selectedpaint() 方法中检测到选择。

    【讨论】:

    • 仅供参考,我认为更pythonic的模型是在您正在处理的情况下显式返回True,然后return QStyledItemDelegate.editorEvent(self, event, model, option, index)将调用该方法的基本实现。很确定这会产生相同的行为(但可能是错误的!)
    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2016-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多