Мне наследовали класс от QWidget
, теперь в том классе я буду создавать aQListView
объект и заполнение объектов для просмотра. Когда выбор объектов в представлении списка изменяется, я хочу добраться 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()));
все