如何控制 QListWidget 选择

Posted

技术标签:

【中文标题】如何控制 QListWidget 选择【英文标题】:How to control QListWidget selection 【发布时间】:2014-09-22 14:23:35 【问题描述】:

我用 QListWidget 实现了一个弹出列表。但是我发现当鼠标按下一个项目时,列表的选择就完成了。但我想要的是点击选择。我怎样才能改变它? (无委托)

更新:

我有一个 QListWidget 的子类。当我按住一个项目的左键时,这个列表的选择就完成了(发出信号、更改 selectedItems()、更改 Qss QListWidget::item:selected 等)。我想要的是在项目上释放鼠标时进行这些更改,而不是按住它。

【问题讨论】:

子类化 QListWidget @niyou 是的,我就是这么做的。但是如何控制选择行为。 【参考方案1】:

QListWidget 有函数setSelectionMode 和setSelectionBehaviour。如果这不是您想要的,请更清楚地说明您想要实现的目标。

针对问题的更新,您需要处理小部件的鼠标事件以防止鼠标按下事件发生时选择(不要调用基类函数),然后自己处理设置选择,以响应鼠标释放事件。

由于 QListWidget 是一个带有内部模型的便利类,你最好使用QListView,它允许你操作它的selection model。

如果您决定这样做,请确保有充分的理由,因为用户希望列表小部件以特定方式工作,而更改这一点可能只会惹恼用户。

【讨论】:

是的,当我停止在事件处理程序中使用默认函数时,会出现很多奇怪的行为。我将传递给 QListView。泰。

以上是关于如何控制 QListWidget 选择的主要内容,如果未能解决你的问题,请参考以下文章

如何控制 QListWidget 选择

7.5.3 QListWidgetItem条目视图介绍

Python:如何共享同一个小部件

如果选择了多个项目,如何在 QListWidget 中打印多个项目

如何在pyqt5 QlistWidget中选择当前项目

QlistWidget如何一一选择项目