7

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

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

4

2 回答 2

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 )

我想它会对你有所帮助!

于 2010-03-18T14:40:31.303 回答
0

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()));

而已

于 2010-03-18T09:15:17.797 回答