Russian Qt Forum
Ноябрь 24, 2024, 00:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Переход на добавленную строку и выделение измененной в QTableView  (Прочитано 2364 раз)
ultimatet41
Гость
« : Ноябрь 24, 2011, 18:08 »

Собственно вопрос прозвучал в названии темы. Код который используется для работы с бд

Загрузка таблица и отображение в 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()){}

Буду очень благодарен за помощь.
Записан
ultimatet41
Гость
« Ответ #1 : Ноябрь 29, 2011, 16:45 »

на данный момент сделал такой финт ушами:
Код:
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();
}

 Конечно не очень красиво всё это дело выглядит, но работает на ура без каких либо задержек.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.