установить текущий индекс базы qtableview для некоторой строки

у меня есть 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?!
});

Обратите внимание, что я не могу использовать одну и ту же модель для этих двух виджетов, потому что способ их заполнения совершенно другой.

введите описание изображения здесь

1

Решение

я использовал 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;
}
}
});
-1

Другие решения


По вопросам рекламы [email protected]