Russian Qt Forum
Апрель 18, 2024, 06:49
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
заполнить таблицу ответом на sql-запрос
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: заполнить таблицу ответом на sql-запрос (Прочитано 6480 раз)
qlewer
Новичок
Offline
Сообщений: 41
заполнить таблицу ответом на sql-запрос
«
:
Май 27, 2020, 18:01 »
имеется sql запрос, который возвращает ответ в сотни строк по сотне колонок в каждом. затем данные заносятся в модель "поячеечно":
Код:
while (query->next()) {
for(int j=0; j<spisokkolonok.count(); j++)
{
item = new QStandardItem();
item->setText(query->value(j).toString());
item->setFont(font);
modell->setItem(i, j, item);
}
i++;
}
затем модель засовывается в tableView. это происходит очень медленно (секунды). подскажите, как можно быстрее выдавать строки ответа в таблицу? (желательно, в tableView же, мне еще с ним работать потом)
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #1 :
Май 27, 2020, 18:08 »
Тебе нужны QSqlTableModel/QSqlQueryModel.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #2 :
Май 27, 2020, 21:41 »
начал использовать QSqlQueryModel
действительно помогло, спасибо, но не могу найти нормальный аналог сигнала itemChanged(QStandardItem*).
мне нужно получать содержимое ячейки в первой колонки той строки, в которой что-то редактируется пользователем
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #3 :
Май 28, 2020, 08:18 »
Не понял, что тебе нужно. Попробуй более подробно объяснить.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #4 :
Май 28, 2020, 09:44 »
я использовал стандартную модель. в ней был сигнал itemChanged(QStandardItem*). нужен аналог такого сигнала в QSqlQueryModel, чтобы я мог получить текст и номер строки изменяемой ячейки модели
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #5 :
Май 28, 2020, 10:02 »
Кем изменяемой? Как изменяемой? QSqlQueryModel не поддерживает редактирование через вьюху.
Советую тебе посмотреть примеры работы с QSql*Model в документации, там должны быть ответы на твои вопросы.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #6 :
Май 28, 2020, 11:35 »
- подскажите, как сделать ЭТО?
- посмотри ЭТО в документации
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #7 :
Май 28, 2020, 11:44 »
https://doc.qt.io/qt-5/qsqlquerymodel.html
https://doc.qt.io/qt-5/qtsql-querymodel-example.html
https://doc.qt.io/qt-5/qsqltablemodel.html
https://doc.qt.io/qt-5/qtsql-tablemodel-example.html
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #8 :
Май 29, 2020, 00:29 »
всё перепробовал, никак. необходимо по двойному щелчку в ячейке tableview с моделью qsqlquerymodel редактировать данные. не получается сделать таблицу редактируемой. есть у кого опыт?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #9 :
Май 29, 2020, 08:28 »
QSqlQueryModel не поддерживает такого редактирования, используй QSqlTableModel
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #10 :
Май 29, 2020, 09:36 »
если я правильно прочитал описание QSqlQueryModel, эта модель выводит 1 таблицу, тогда как у меня более сложный запрос, чем просто вывод таблицы
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #11 :
Май 29, 2020, 09:52 »
Если у тебя сложный запрос и QSqlTableModel не подходит, редактирование придется реализовывать вручную. Я советую воспользоваться поиском по форуму, ибо эта тема многократно поднималась и разбиралась. Вот пример запроса для поиска:
https://duckduckgo.com/?q=site%3Aprog.org.ru+QSqlTableModel+%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&t=ffab&atb=v210-1&ia=web
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qlewer
Новичок
Offline
Сообщений: 41
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #12 :
Май 29, 2020, 10:17 »
я перечитал все темы. очень часто пишут (
http://www.prog.org.ru/topic_12893_0.html
) про переопределение функции flags, которое позволило бы сделать ячейки редактируемыми. я создал свой класс, прописал там
Код:
Qt::ItemFlags EditableSqlModel::flags(
const QModelIndex &index) const
{
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
flags |= Qt::ItemIsEditable;
return flags;
}
но ничего не изменилось, я не могу редактировать ячейки. или нужно что-то где-то еще прописать?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #13 :
Май 29, 2020, 10:32 »
Это тебе ничего не даст. Еще раз повторю, поищи по форуму. Тебе придется либо написать свою модель, которая поддерживает редактирование, либо редактирование реализовать через отдельный диалог. Я бы выбрал второй путь, это проще в реализации, более юзер-френдли и даст тебе возможность использовать стандартную QSqlQueryModel.
«
Последнее редактирование: Май 29, 2020, 10:47 от Пантер
»
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
tamplier
Новичок
Offline
Сообщений: 40
Re: заполнить таблицу ответом на sql-запрос
«
Ответ #14 :
Май 29, 2020, 15:07 »
Цитата: qlewer от Май 29, 2020, 09:36
если я правильно прочитал описание QSqlQueryModel, эта модель выводит 1 таблицу, тогда как у меня более сложный запрос, чем просто вывод таблицы
https://doc.qt.io/qt-5/qsqlrelationaltablemodel.html
- класс QSqlRelationalTableModel является наследником QSqlTableModel и обладает более высоким уровнем реализации. Она как раз для более сложных запросов, позволяет работать с несколькими связанными таблицами БД.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...