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.