19 ноября 2018 г. 12:06

Можно ли через QTableWidget вывести результат запроса SQL

QTableWidget, Qt

Здравствуйте.

У меня есть QTableWidget .

Вот так делаю запрос в SQLite

 QSqlDatabase SearchDB = QSqlDatabase::addDatabase("QSQLITE");    
SearchDB.setDatabaseName("C:\\CVReader\\ResumeArraySQLite.db");
    if (!SearchDB.open()) {qDebug()<<"not open SQL file";}
QSqlQuery query;
    query.prepare("SELECT ...");
query.exec();

Могу я вывести результат запроса на QTableWidget ?

Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
6

Добрый день.

Вот здесь есть пример с QTableWidget и базой данных , не совсем такой пример, конечно, как вы хотите, но основа там есть.

Посмотрите на содержимое этого метода

void MainWindow::createUI(const QStringList &headers)


0

Имхо если выводить проще QTableView пользоваться. ну и редактировать там тоже проще


2

Согласен с вами


0
V
  • 20 ноября 2018 г. 3:40
  • (ред.)

Я в своём проекте текущем пользуюсь TableView. Мне кажется преимущество его перед TableWidget в том, что у него есть метод SetModel. У TableWidget он приватный. На форме размещаю tableView и тогда смотреть всю таблицу становится очень легко.

Сначала нужно объявить модель, которую потом будем выгружать на tableView. Я обычно делаю это в конструкторе класса.

model = new QSqlRelationalTableModel(this)
Далее в модель загружаешь данные из нужной таблицы БД:
model->setTable("tableName");
Делаем выборку:
model->select();
Далее загружаешь модель в tableView:
ui->tableView->setModel(model);
И всё. Если нужны какие-то конкретные данные по результатам SQL запроса, мне кажется использовать tableView для этого неудобно. Нужно смотреть другие средства.
2

Для выбора конкретных данных в QSqlTableModel есть метод setFilter . Либо использовать QSqlQeryModel для выбора данных, в том числе нескольких таблиц.

    QSqlDatabase dbcenter = QSqlDatabase::database("central");
    modelTerminals = new QSqlQueryModel();
    modelTerminals->setQuery("SELECT t.terminal_id, TRIM(t.name) AS name, c.SERVER_NAME, c.DB_NAME, c.CON_PASSWORD FROM TERMINALS t "
                             "LEFT JOIN CONNECTIONS c ON t.TERMINAL_ID = c.TERMINAL_ID "
                             "WHERE t.TERMINALTYPE=3 and t.ISACTIVE='T' and c.CONNECT_ID=2 "
                             "ORDER BY t.TERMINAL_ID",dbcenter);

    modelTerminal->setHeaderData(0,Qt::Horizontal,tr("АЗС"));
    modelTerminal->setHeaderData(1,Qt::Horizontal,tr("Расположение"));

    ui->tableView->setModel(modelTerminal);
    ui->tableView->verticalHeader()->hide();

    for(int i = 2; i<modelTerminal->columnCount();++i){
        ui->tableView->hideColumn(i);
    }

    ui->tableView->resizeColumnsToContents();
    ui->tableView->verticalHeader()->setDefaultSectionSize(ui->tableView->verticalHeader()->minimumSectionSize());

Такой подход еще удобен тем, что данные из модели доступны не только для отображения а и для дальнейшего использования.




1

спасибо

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
m
19 мая 2019 г. 1:49
mahhaki

Qt - Тест 001. Сигналы и слоты

  • Результат:78баллов,
  • Очки рейтинга2
S
17 мая 2019 г. 13:14
SunBro

Qt - Тест 001. Сигналы и слоты

  • Результат:42баллов,
  • Очки рейтинга-8
b
17 мая 2019 г. 4:18
banana

C++ - Тест 003. Условия и циклы

  • Результат:57баллов,
  • Очки рейтинга-2
Последние комментарии
P.
18 мая 2019 г. 14:03
PELMYACH .

Спасибо большое! Вскоре буду разбираться!
18 мая 2019 г. 9:13
Евгений Легоцкой

Добрый день! Отнимать значение общего счётчика можно в деструкторе класса кнопки QDynamicButton::~QDynamicButton(){ ResID--;} При этом я бы ещё переустанавливал значения вс...
P.
14 мая 2019 г. 22:33
PELMYACH .

Здравствуйте!А не подскажите, как можно при удалении какой либо кнопки, у щётчика отнять значение?Дабы например четвёртой кнопке соответствовал ID 4, а не 5 скажем
6 мая 2019 г. 6:39
Евгений Легоцкой

Добрый день. Этот урок для Qt Quick Control версии 1, Вы используете вторую версию. Здесь style уже нет, кастомизацию можно делать уже или черещ соответствующие property или через ...
U
4 мая 2019 г. 3:14
Unreal_man

Делаю вроде правильно, а ничего не получается. Что упустил? После button1. в выпадающем списке нет style.Да, и откуда в уроке взялся файл .pri и зачем он нужен?
Сейчас обсуждают на форуме
19 мая 2019 г. 12:45
Михаиллл

Скачал openssl-1.1.1 от сюда , но не понимаю что делать с этой папкой
19 мая 2019 г. 10:52
Евгений Легоцкой

Если честно, то мне нужно самому время потратить, чтобы глянуть это дело. Я использовал Flutter для разработки, а не Qt. Просто исходя из опыта, могу сказать, что по большей части всё на эмуля...
16 мая 2019 г. 23:08
BlinCT

Решил через indexOf сделать. Возвращает или номер позиции где нашел символ или строку или -1 если не найдено.
15 мая 2019 г. 15:06
Михаиллл

Спасибо , заработало.Получаю ответный сигнал.Но теоретически, в ответ на запрос должен прийти json файл. Скажите пожалуйста, как можно открыть ответные данные, прочитать их, и потом удалить...
14 мая 2019 г. 11:07
Евгений Легоцкой

Из той задачи, которую вы привели, у вас есть база данных и таблица в ней с текстами. Для представления данных из базы данных обычно используют QTableView, а text browser здесь не к мест...

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB