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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение данных из компонента tableView  (Прочитано 5749 раз)
lexflax
Гость
« : Январь 18, 2014, 14:59 »

Доброго времени суток.
В моей базе данных есть представление которое красиво выводит информацию на главную форму в компонент tableView.
На этой же форме есть кнопка удалить запись... Пользователь выбирает ту строку которую хочет удалить и нажимает на кнопку...
Но это представление и на прямую из него нельзя ничего удалить, чтоб в нем исчезла информация нужно ее удалить из таблиц которые к этому представлению подвязанны... информация типа " код вуза, государственный код.... и прочее"
Тоесть главная задача получить информацию из строки которую выбрал пользователь, и отправить потом эту инфу через запросы в таблицу на их удаление...
Как эту информацию можно получить?? , кто знает все возможные варианты опишите пожалуйста лучше с примером кода, заранее благодарю.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Январь 18, 2014, 18:15 »

эта информация спрашивается у модели
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lexflax
Гость
« Ответ #2 : Январь 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();
Записан
lexflax
Гость
« Ответ #3 : Январь 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();
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #4 : Январь 22, 2014, 20:47 »

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

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


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