如何在Qt中获取selectionchange事件

时间:2010-03-18 09:04:30

标签: qt qt4 symbian nokia

我有一个继承自QWidget的类,现在在该类中我将创建一个QListView对象并填充要查看的项目。 当列表视图中的项目选择发生变化时,我想获得selectionChange事件。

我怎样才能做到这一点?请简要告诉我。

2 个答案:

答案 0 :(得分:10)

当您有视图时,您将拥有一个用于选择项目的模型。它被称为QItemSelectionModel

例如,使用QListView,您可以通过以下方式获取selectionModel:

QItemSelectionModel* selectionModel() const;

现在,从该模型中,您将能够连接许多信号:

void currentChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentColumnChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentRowChanged ( const QModelIndex & current, const QModelIndex &    previous )
void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected )

我认为它会对你有所帮助!

答案 1 :(得分:0)

https://doc.qt.io/archives/qt-4.8/qlistwidget.html你可能想要使用QListWidget而不是view,我不记得具体原因,但是这个类有你想要使用的这些信号。


https://doc.qt.io/archives/qt-4.8/qlistwidget.html#itemSelectionChanged 这是您必须连接的信号。

在班级声明中填一个插槽:

 private slots:
     void selChanged();

在选择更改时使用您想要执行的操作填写此插槽。 将信号连接到类中的某个位置 - 可能是在QWidget派生的构造函数中。

 connect(yourListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selChanged()));

就是这样