Собственно вопрос прозвучал в названии темы. Код который используется для работы с бд
Загрузка таблица и отображение в QTableView
productsTb->setQuery("SELECT * "
"FROM products "
"ORDER BY product_name");
productsTb->setHeaderData(1, Qt::Horizontal, trUtf8("Товары"));
ui->productsTv->setModel(productsTb);
ui->productsTv->setColumnHidden(0, true);
Изменение элемента
QString request = "UPDATE products "
"SET product_name = '"+ui->product_le->text().toUtf8()+"' "
"WHERE product_id = "+idStr.toUtf8()+";";
if(!sql.exec(request)){}
Добавление нового элементы
QSqlQuery sql;
sql.prepare("INSERT INTO products (product_name) "
"VALUES (:product_name);");
sql.bindValue(":product_name", ui->productNameLe->text().toUtf8());
if(!sql.exec()){}
Буду очень благодарен за помощь.
на данный момент сделал такой финт ушами:
QVariant myData;
int i = 0;
indexModel = ui->productsTv->model()->index( i, 0, QModelIndex());
myData = ui->productsTv->model()->data( indexModel, Qt::DisplayRole);
QString id = myData.toString();
if(!selectId.isEmpty()){
while(i <= productsTb->rowCount()){
indexModel = ui->productsTv->model()->index( i, 0, QModelIndex());
myData = ui->productsTv->model()->data( indexModel, Qt::DisplayRole);
id = myData.toString();
if(id == selectId){
break;
}
++i;
}
QModelIndex ind = ui->productsTv->model()->index(i, 1, QModelIndex());
ui->productsTv->setCurrentIndex(ind);
ui->productsTv->selectRow(ui->productsTv->currentIndex().row());
ui->productsTv->setFocus();
}
Конечно не очень красиво всё это дело выглядит, но работает на ура без каких либо задержек.