我有一个继承自 的类QWidget
,现在在该类中我将创建一个QListView
对象并填充要查看的项目。当列表视图中的项目选择发生更改时,我想获取该selectionChange
事件。
我怎样才能做到这一点?请简要告诉我。
当您拥有视图时,您将拥有一个用于选择项目的模型。它被称为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 )
我想它会对你有所帮助!
https://doc.qt.io/archives/qt-4.8/qlistwidget.html您可能想使用 QListWidget 而不是视图,我不记得具体原因,但是此类具有您想要使用的这些信号。
https://doc.qt.io/archives/qt-4.8/qlistwidget.html#itemSelectionChanged 这是您必须连接的信号。
在你的类声明中创建一个插槽:
private slots:
void selChanged();
用您想要在选择更改时执行的操作填充此插槽。将信号连接到您类中的某个位置的此插槽 - 可能在您的 QWidget 派生类的构造函数中。
connect(yourListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selChanged()));
而已