у меня есть QTableView
с QSqlqueryModel
QSqlQueryModel db_model_.setQuery("SELECT * FROM Main WHERE Type='1' ORDER BY Count DESC");
tableView.setModel(&db_model_);
Main
определяется как :
Word(TEXT) | Count(INTEGER) | Type(INTEGER
Я хочу выбрать строку этой таблицы на основе текста элемента, который пользователь выбирает из другого QListWidget
,
Я старался setCurrentIndex
но он принимает QModelIndex
, Я не могу понять, как искать в целом Word
колонка моего tableView
и найти строку этого listWidget
и кормить его QModelIndex
void (QListWidget::*itemClicked)(QListWidgetItem*) = &QListWidget::itemClicked;
connect(&listWidget, itemClicked, [&](QListWidgetItem * item){
const QString& text= item->text();
//How to search thorough the Word column and find text and select it?!
});
Обратите внимание, что я не могу использовать одну и ту же модель для этих двух виджетов, потому что способ их заполнения совершенно другой.
я использовал QAbstractItemModel :: Индекс для перебора первого столбца и использования setCurrentIndex
для изменения текущего выбранного элемента.
Теперь работает нормально.
connect(&listWidget, itemClicked, [&](QListWidgetItem * item){
const QString& text= item->text();
int size = tableView.model()->rowCount();
for (int i = 0; i < size; i++){
QModelIndex& cur=tableView.model()->index(i, 0);
if (cur.data() == text){
tableView.setCurrentIndex(cur);
tableView.scrollTo(cur);
break;
}
}
});