Autor podstrony: Krzysztof Zajączkowski

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

Klasa QSqlTableModel również pozwala na wyświetlanie danych w kontrolce QTableView, różnica pomiędzy tą klasą a omawianą wcześniej QSqlQueryModel jest taka, że w przypadku klasy QSqlTableModel możliwa jest edycja pól. Niestety klasa QSqlTableModel ma też dość paskudne ograniczenia, które uniemożliwiają np ograniczenie liczby pobieranych z bazy danych elementów oraz wyboru kolumn, które mają być wyświetlane. Niemniej jednak oto przykładowy kod wykorzystujący tą klasę:

Plik mainwindow.h:

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <mysql.h> #include <QSqlDatabase> #include <QSqlTableModel> #include <QSqlError> #include <QDebug> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT QSqlDatabase db; // baza danych QSqlTableModel *table; // wskaźnik na obiekt klasy QSqlTableModel void resizeEvent(QResizeEvent *); 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()){ qDebug() << "Can't connect to database. Error: " << db.lastError().text(); } table = new QSqlTableModel(this, db); // tworzę obiekt klasy QSqlTableModel table->setTable("books"); // ustawiam tabelę, z której będę korzystał table->select(); // wysyłam zapytanie selekt ui->books->setModel(table); // podpinam model tabeli do kontroli typu QTableView } MainWindow::~MainWindow() { delete ui; } void MainWindow::resizeEvent(QResizeEvent *event){ QMainWindow::resizeEvent(event); QRect r = ui->centralWidget->geometry(); ui->books->setGeometry(0, 0, r.width(), r.height()); }
Przykład współpracy klasy QSqlTableModel
Rys. 1
Przykład współpracy klasy QSqlTableModel
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
  3. doc.qt.io/qt-5/qsqltablemodel.html - opis klasy QSqlTableModel 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.