如何在PySide / PyQt的QListView中选择自定义QStyledItemDelegate?

时间:2015-10-30 08:24:21

标签: python-2.7 pyqt pyside

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

1 个答案:

答案 0 :(得分:1)

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

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

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