Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
1

Получение данных из компонента tableView

18.01.2014, 16:15. Просмотров 1429. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
В моей базе данных есть представление которое красиво выводит информацию на главную форму в компонент tableView.
На этой же форме есть кнопка удалить запись... Пользователь выбирает ту строку которую хочет удалить и нажимает на кнопку...
Но это представление и на прямую из него нельзя ничего удалить, чтоб в нем исчезла информация нужно ее удалить из таблиц которые к этому представлению подвязанны... информация типа " код вуза, государственный код.... и прочее"
Тоесть главная задача получить информацию из строки которую выбрал пользователь, и отправить потом эту инфу через запросы в таблицу на их удаление...
Как эту информацию можно получить?? , кто знает все возможные варианты опишите пожалуйста лучше с примером кода, заранее благодарю.
0
Миниатюры
Получение данных из компонента tableView  
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 16:15
Ответы с готовыми решениями:

Получение значения выделенной ячейки tableView
Всем доброго времени суток. Пишу программу на QT Creater, используя модели, требуется взять...

Получение сигнала после выбора строки в tableview
Доброго времени суток. Парни подскажите есть ли какой нибудь сигнал при двойном нажатии на строку...

QML TableView. Обработка данных - C++ Qt
Всем доброго времени суток. У меня есть QML TableView, я выбираю из под c++ в QFileDialog файлы, и...

Редактирование данных через QSqlQueryModel+tableView
Все добра! Необходимо отобразить в tableview и редактировать данные из нескольких таблиц. Как...

Как исправить ошибки при открытии базы данных в Qt в объекте tableView?
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all...

5
RazrFalcon
1391 / 1248 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
18.01.2014, 17:38 2
Ну обычное решение - это держать в модели колонку с id строк, а в представлении ее скрывать.
По этому выбрав строку - мы знаем ее id и можем легко удалить запись из таблицы.

Кода с примерами тут особо и не надо. Все зависит от того как вы все это реализовали.
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
19.01.2014, 09:39  [ТС] 3
Не совсем понимаю как "это держать в модели колонку с id строк, а в представлении ее скрывать"
У меня есть таблица Kod
Содержит поля: kodsv,kodg,kodk.
Таблица Kvalif
Содержит поля: Kodk, Namespiciliz.
И прочие таблицы которые выводятся в представление zews.
Zews содержит поля:kodsv,kodg,Namevuz,Namegos,NameKvalif и прочие...
Допустим выбрал пользователь строку номер 5!! Которая на скрине представлена!
У этой строки kodsv="29010"
Как вынуть это значение в переменную?
Допустим KSV=kodsv;
А потом эту переменную вставить запрос для удаления строки из нужной таблицы...
C++ (Qt)
1
2
3
4
5
6
QSqlQuery query;
 
query.prepare("DELETE from kod where kodsv = :kodsv");
query.bindValue(":kodsv", KSV);
 
query.exec();
0
RazrFalcon
1391 / 1248 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
19.01.2014, 12:58 4
selectionModel() + data()
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
19.01.2014, 14:40  [ТС] 5
вот так надо было сделать...
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
void MainWindow::on_pushButton_2_clicked()
{
    QModelIndex current  = ui->tableView->currentIndex();
     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();
 
}
ну и обновления представления чтоб сразу было видно что строка удалена...
C++ (Qt)
1
connect( ui->pushButton_2, SIGNAL( clicked() ),this,  SLOT(prostoSlot()));
Содержание функции prostoSlot
C++ (Qt)
1
2
3
4
5
6
7
8
void MainWindow:: prostoSlot()
{
    zews = new QSqlTableModel(0,db);
        zews->setTable("zews");
        zews->select();
       ui->tableView->setModel(zews);
        zews->setEditStrategy(QSqlTableModel::OnManualSubmit);
}
Тема Закрыта...
0
fasked
Эксперт С++
5003 / 2582 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.01.2014, 09:21 6
Цитата Сообщение от lexflax Посмотреть сообщение
Но это представление и на прямую из него нельзя ничего удалить, чтоб в нем исчезла информация нужно ее удалить из таблиц которые к этому представлению подвязанны
Из модели надо удалять, а не из таблицы.
1
20.01.2014, 09:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 09:21

TableView выбор данных
Приветствую! Есть форма с TableView. Заполнение работает. Суть вопроса: Как отдельным методом...

Автоматическое обновление данных в tableView
У меня в программе на главной форме расположена таблица в представлении QtableView , данные...

Не корректное отображение данных в TableView
Здравствуйте. Такая проблемка, не выводятся некоторые столбцы из таблицы в TableView,делал по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.