【问题标题】:Qlistview Selectionchanged event not found in Qt?在 Qt 中找不到 Qlistview Selectionchanged 事件?
【发布时间】:2011-06-03 05:29:46
【问题描述】:

Qt 中未找到 Qlistview Selectionchanged 事件 Qt中Qlistview中的选择更改事件等价于什么?

【问题讨论】:

    标签: 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 )
    

    文档:

    【讨论】:

    • 不知道这是否在某个时候有效,但它似乎在 qt 4.8 中不起作用,因为 QListView currentChanged 因任何原因受到保护。
    • 我可以确认QAbstractItemView::currentChangedQt 5.7 中受到保护,这仅在您尝试制作自己的 ListView 实现时才有用。
    • 你能从你的答案中编辑 QListView 部分吗? QListWidget 部分是正确的,但 QListView 部分是错误的,Mat 对此是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多