我有一个继承自QWidget
的类,现在在该类中我将创建一个QListView
对象并填充要查看的项目。
当列表视图中的项目选择发生变化时,我想获得selectionChange
事件。
我怎样才能做到这一点?请简要告诉我。
答案 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()));
就是这样