Как получить событие selectionchange в Qt

у меня есть класс, унаследованный от QWidget, теперь в этом классе я буду создаватьQListView объект и заполнение элементов для просмотра. Когда выбор элементов в представлении списка изменяется, я хочу получить selectionChange событие.

как я могу добиться этого?. Скажите, пожалуйста, вкратце.

2 ответов


когда у вас есть представление, у вас будет модель, которая будет использоваться для выбора элемента. Это называется 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 )

Я думаю, что это поможет вам немного!


http://doc.trolltech.com/4.6/qlistwidget.html Возможно, вы захотите использовать QListWidget вместо view, я не помню, почему, но у этого класса есть эти сигналы, которые вы хотите использовать.


http://doc.trolltech.com/4.6/qlistwidget.html#itemSelectionChanged Это сигнал, к которому вы должны подключиться.

сделайте слот в объявлении класса:

 private slots:
     void selChanged();

заполните этот слот тем, что вы хотите сделать при выборе изменение. Подключите сигнал к этому слоту где - нибудь в вашем классе-возможно, в конструкторе вашей производной QWidget.

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

вот это