2013-04-23 1 views
5

У меня есть QTableView, который работает правильно, показывая мою модель на графическом интерфейсе. однако я хотел бы создать «SIGNAL/SLOT», который работает, когда я выбираю строку из QTableView.Qt: C++: Как создать СИГНАЛ/СЛОТ при выборе строки в QTableView

Как я могу это сделать?

ответ

2

Использовать сигнал currentRowChanged(const QModelIndex & current, const QModelIndex & previous) из модели выбора (docs).

2

Смотрите документацию QAbstractItemView https://qt-project.org/doc/qt-4.7/qabstractitemview.html

недействительными QAbstractItemView активированного (Const QModelIndex & индекс) [сигнал]

Этот сигнал посылается, когда элемент определяется индексом активируется пользователем. Как активировать элементы зависит от платформы; например, на однократного или двойного щелчка на элементе или путем нажатия клавиши Return или Введите ключ, когда элемент является текущим.

И использовать QModelIndex :: строку()

+1

Активация - это не то же самое, что выбор. – cmannett85

3

Вы можете сделать это следующим образом:

connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), 
      SLOT(slotSelectionChange(const QItemSelection &, const QItemSelection &)) 
      ); 

И слот будет:

void MainWindow::slotSelectionChange(const QItemSelection &, const QItemSelection &) 
{ 
      QModelIndexList selection = ui->tableView->selectionModel()->selectedRows();//Here you are getting the indexes of the selected rows 

      //Now you can create your code using this information 
} 

Я надеюсь, что это может помочь тебе.