Qt - wykorzystanie klasy QSqlQueryModel do wyświetlania rekordów z bazy danych w kontrolce QTableView

Stronę tą wyświetlono już: 268 razy

W kontrolce QTableView można w bardzo łatwy sposób wyświetlać dane wykorzystując klasę QSqlQueryModel. Oto przykład:

W pliku mainwindow.h:

Listing 1
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <mysql.h>
  5. #include <QSqlQueryModel>
  6. #include <QSqlDatabase>
  7. #include <QSqlError>
  8. #include <QMessageBox>
  9. namespace Ui {
  10. class MainWindow;
  11. }
  12. class MainWindow : public QMainWindow
  13. {
  14. Q_OBJECT
  15. QSqlQueryModel *queryModel;
  16. QSqlDatabase db;
  17. void resizeEvent(QResizeEvent *event);
  18. public:
  19. explicit MainWindow(QWidget *parent = 0);
  20. ~MainWindow();
  21. private:
  22. Ui::MainWindow *ui;
  23. };
  24. #endif // MAINWINDOW_H

W pliku mainwindow.cpp:

Listing 2
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. db = QSqlDatabase::addDatabase("QMYSQL");
  9. db.setDatabaseName("library");
  10. db.setHostName("localhost");
  11. db.setPassword("password");
  12. db.setPort(3306);
  13. db.setUserName("gienek");
  14. if(!db.open()){
  15. QMessageBox::warning(this, "Database connection error", db.lastError().text());
  16. }
  17. queryModel = new QSqlQueryModel(this); // tworzę obiekt modelu
  18. queryModel->setQuery("SELECT id, title, author FROM books"); // dodaję zapytanie
  19. ui->tvBooks->setModel(queryModel); // podpinam model pod kontrolkę typu QTableView
  20. }
  21. void MainWindow::resizeEvent(QResizeEvent *event){
  22. QRect r = ui->centralWidget->geometry();
  23. ui->tvBooks->setGeometry(0, 0, r.width(), r.height());
  24. }
  25. MainWindow::~MainWindow()
  26. {
  27. delete ui;
  28. }

Powyższy kod spowoduje wyświetlenie danych z tabeli books w kontrolce QTableView.

Wyświetlanie danych z tabeli bazy danych w kontrolce QTableView
Rys. 1
Wyświetlanie danych z tabeli bazy danych w kontrolce QTableView
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qsqldatabase.html - opis klasy QSqlDatabase na stronie dokumentacji Qt
  2. doc.qt.io/qt-5/qsqlquerymodel.html - opis klasy QSqlQueryModel na stronie dokumentacji Qt

Komentarze