Autor podstrony: Krzysztof Zajączkowski

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