Михаиллл
Михаиллл19. November 2018 07: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 ?

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

6
Evgenii Legotckoi
  • 19. November 2018 07:43

Добрый день.

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

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

void MainWindow::createUI(const QStringList &headers)


    Ruslan Polupan
    • 19. November 2018 11:48

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


      Evgenii Legotckoi
      • 19. November 2018 12:08

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


        V
        • 19. November 2018 22:40
        • (bearbeitet)

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

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

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

          Для выбора конкретных данных в 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());

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




            Михаиллл
            • 20. November 2018 03:55

            спасибо

              Kommentare

              Nur autorisierte Benutzer können Kommentare posten.
              Bitte Anmelden oder Registrieren
              Letzte Kommentare
              A
              ALO1ZE19. Oktober 2024 08:19
              Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
              ИМ
              Игорь Максимов5. Oktober 2024 07:51
              Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
              d
              dblas55. Juli 2024 11:02
              QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
              k
              kmssr8. Februar 2024 18:43
              Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
              Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
              Jetzt im Forum diskutieren
              J
              JacobFib17. Oktober 2024 03:27
              добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
              JW
              Jhon Wick1. Oktober 2024 15:52
              Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
              КГ
              Кирилл Гусарев27. September 2024 09:09
              Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
              F
              Fynjy22. Juli 2024 04:15
              при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

              Folgen Sie uns in sozialen Netzwerken