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

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

Как я могу достигнуть этого?. Скажите мне вкратце.

7
задан Silas Parker 5 April 2016 в 15:58
поделиться

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 )

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

10
ответ дан 7 December 2019 в 01:19
поделиться

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

все

0
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: