我有一个继承自QWidget
的类,在这个类中,我将创建一个QListView
对象并填充要显示的项目。
当列表视图中的项目选择发生变化时,我想获取selectionChange
事件。
我该如何实现这个功能?请简要告诉我。
当你有一个视图时,你将拥有一个用于选择项的模型。它被称为QItemSelectionModel
。
例如,在使用QListView
时,可以按以下方式获取选择模型:
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 而不是 view,我不记得具体原因,但这个类有你想要使用的这些信号。
https://doc.qt.io/archives/qt-4.8/qlistwidget.html#itemSelectionChanged 这是您需要连接的信号。
在您的类声明中创建一个槽:
private slots:
void selChanged();
在选择更改时,填充此插槽以执行您想要的操作。 在您的类中的某个地方将信号连接到此插槽 - 可能是在QWidget派生类的构造函数中。
connect(yourListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selChanged()));
就是这样