Как получить событие 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()));
вот это