在 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() 添加您自己的模型。

这适用于QListViewQListWidget,因为此行为由两者都继承的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 事件?的主要内容,如果未能解决你的问题,请参考以下文章

Qt:更改 QListView 中的图标

为啥 QListView 中看不到文件图标?

QListView中的QT4 QstringListModel

在 QT-creator 中找不到 phoneGap 文件

在 Qt Creator 中找不到 .pro 文件

在 Qt5.4.1 中找不到类型 qintptr