Парадиматический сигнал, когда пользователь выбирает строку

У меня есть QTableView, представляющий модель, состоящую из строк и нескольких столбцов, например координаты, такие как x, y, z. Строки представляют собой целые элементы, и я хочу запускать сигнал каждый раз, когда пользователь выбирает выбор. Я предполагаю, что некоторые графические объекты меняются в зависимости от выбранной строки.

Моя текущая попытка - сделать что-то вроде

ui.tlbView->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
ui.tlbView->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows);
connect(ui.tlbView,&QTableView::clicked ,this,&FancyWidget::rowSelected);

Иногда это работает, но иногда не работает. Например, щелчок по вертикальному заголовку не регистрируется при изменении выбора. Это плохо, потому что я хочу, чтобы сигнал срабатывал каждый раз при изменении выделения.

Это заставляет меня чувствовать, что перехват сигнала щелчка является взломом, и учитывая, что виджет правильно определяет, что он выбран, даже когда мой сигнал щелчка не вызывается. Я пытаюсь понять, как сопоставить 1: 1 состояние выбора виджета.


person Mikhail    schedule 22.01.2014    source источник


Ответы (1)


Чтобы получать уведомления об изменениях выбора, просмотрите QItemSelectionModel. Доступ к модели выбора табличного представления можно получить с помощью selectionModel(). В вашем случае QItemSelectionModel::selectionChanged() должен быть тем, что тебе нужно.

connect(ui.tlbView->selectionModel(), &QItemSelectionModel::selectionChanged, 
        this, &FancyWidget::selectionChanged);
person Frank Osterfeld    schedule 22.01.2014