Russian Qt Forum

Qt => Базы данных => Тема начата: lexflax от Январь 18, 2014, 14:59



Название: Получение данных из компонента tableView
Отправлено: lexflax от Январь 18, 2014, 14:59
Доброго времени суток.
В моей базе данных есть представление которое красиво выводит информацию на главную форму в компонент tableView.
На этой же форме есть кнопка удалить запись... Пользователь выбирает ту строку которую хочет удалить и нажимает на кнопку...
Но это представление и на прямую из него нельзя ничего удалить, чтоб в нем исчезла информация нужно ее удалить из таблиц которые к этому представлению подвязанны... информация типа " код вуза, государственный код.... и прочее"
Тоесть главная задача получить информацию из строки которую выбрал пользователь, и отправить потом эту инфу через запросы в таблицу на их удаление...
Как эту информацию можно получить?? , кто знает все возможные варианты опишите пожалуйста лучше с примером кода, заранее благодарю.


Название: Re: Получение данных из компонента tableView
Отправлено: kambala от Январь 18, 2014, 18:15
эта информация спрашивается у модели


Название: Re: Получение данных из компонента tableView
Отправлено: lexflax от Январь 19, 2014, 08:44
эта информация спрашивается у модели... Каким образом её можно запросить у модели?
У меня есть таблица Kod
 Содержит поля: kodsv,kodg,kodk.
 Таблица Kvalif
 Содержит поля: Kodk, Namespiciliz.
 И прочие таблицы которые выводятся в представление zews.
Zews содержит поля:kodsv,kodg,Namevuz,Namegos,NameKvalif и прочие...
 Допустим выбрал пользователь строку номер 5!! Которая на скрине представлена!
 У этой строки kodsv="29010"
 Как вынуть это значение в переменную?
 Допустим KSV=kodsv;
 А потом эту переменную вставить запрос для удаления строки из нужной таблицы...
Код:
QSqlQuery query;
 
query.prepare("DELETE from kod where kodsv = :kodsv");
query.bindValue(":kodsv", KSV);
 
query.exec();


Название: Re: Получение данных из компонента tableView
Отправлено: lexflax от Январь 19, 2014, 13:22
вот решение...
Код:
QModelIndex current  = ui->tableView->currentIndex();
     //qDebug()<<ui->tableView->model()->data(ui->tableView->model()->index(current.row(),0),0);
     QSqlQuery query;
     query.prepare("DELETE from kod where kodsv = :kodsv");
     query.bindValue(":kodsv",ui->tableView->model()->data(ui->tableView->model()->index(current.row(),0),0));
             query.exec();
             QSqlQuery query1;
             query1.prepare("DELETE from specvuza where kodsv = :kodsv");
             query1.bindValue(":kodsv",ui->tableView->model()->data(ui->tableView->model()->index(current.row(),0),0));
                     query1.exec();


Название: Re: Получение данных из компонента tableView
Отправлено: demal от Январь 22, 2014, 20:47
Ты очень длинно делаешь это путем прямых вызовов.
Если у тебя есть модель, то и работай с моделью.
Команда для удаления выбранной в tableview строки с использованием модели делается вот так:
model.removeRow(ui->tableView->currentIndex.row());
Зачем городить такой большой огород как у тебя мне непонятно. ???

для получения значения конкретной ячейки в представлении можно использовать:
model.record(индекс строки).value(номер или имя столбца).в какой тип преобразуем (например toString, toInt).