在 Qt 中找不到 Qlistview Selectionchanged 事件?
Posted
技术标签:
【中文标题】在 Qt 中找不到 Qlistview Selectionchanged 事件?【英文标题】:Qlistview Selectionchanged event not found in Qt? 【发布时间】:2011-06-03 05:29:46 【问题描述】:Qt 中未找到 Qlistview Selectionchanged 事件 Qt中Qlistview中的选择更改事件等价于什么?
【问题讨论】:
【参考方案1】:selectionChanged
信号由附加到视图的QItemSelectionModel
生成,而不是视图小部件本身。
您可以通过在视图对象上调用selectionModel()
来获取该模型,或者通过setSelectionModel()
添加您自己的模型。
这适用于QListView
和QListWidget
,因为此行为由两者都继承的QAbstractItemView
处理。
(类层次结构为QAbstractItemView < QListView < QListWidget
。)
更多信息请参见Handling selections in item view。
【讨论】:
对不起。请参阅我编辑的问题,我指的是列表小部件而不是列表视图。 这将是一个重复的家伙。请在这里给出你的答案。谢谢。 @user662285 我真的希望你不会在事后编辑你的问题,你应该为 QListWidget 发布一个不同的问题,因为它们是完全不同的小部件。【参考方案2】:只是选择,所以重点?
使用 QListView 时:
QAbstractItemView::currentChanged ( const QModelIndex & current, const QModelIndex & previous )
使用QListWidget时,也可以使用:
QListWidget::currentItemChanged ( QListWidgetItem * current, QListWidgetItem * previous )
文档:
QListView::currentChanged QListWidget::currentItemChanged【讨论】:
不知道这是否在某个时候有效,但它似乎在 qt 4.8 中不起作用,因为 QListView currentChanged 因任何原因受到保护。 我可以确认QAbstractItemView::currentChanged
在Qt 5.7 中受到保护,这仅在您尝试制作自己的 ListView 实现时才有用。
你能从你的答案中编辑 QListView 部分吗? QListWidget 部分是正确的,但 QListView 部分是错误的,Mat 对此是正确的。以上是关于在 Qt 中找不到 Qlistview Selectionchanged 事件?的主要内容,如果未能解决你的问题,请参考以下文章