Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2533 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:

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <mysql.h> #include <QSqlQueryModel> #include <QSqlDatabase> #include <QSqlError> #include <QMessageBox> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT QSqlQueryModel *queryModel; QSqlDatabase db; void resizeEvent(QResizeEvent *event); public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

W pliku mainwindow.cpp:

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); db = QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName("library"); db.setHostName("localhost"); db.setPassword("password"); db.setPort(3306); db.setUserName("gienek"); if(!db.open()){ QMessageBox::warning(this, "Database connection error", db.lastError().text()); } queryModel = new QSqlQueryModel(this); // tworzę obiekt modelu queryModel->setQuery("SELECT id, title, author FROM books"); // dodaję zapytanie ui->tvBooks->setModel(queryModel); // podpinam model pod kontrolkę typu QTableView } void MainWindow::resizeEvent(QResizeEvent *event){ QRect r = ui->centralWidget->geometry(); ui->tvBooks->setGeometry(0, 0, r.width(), r.height()); } MainWindow::~MainWindow() { delete ui; }

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
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.