我对 Qt 很陌生。我正在尝试使用 Qt 建立 MySQL 数据库连接并显示表信息 QSqlTableModel。这是我的代码:
1) .pro 文件
QT += core gui sql
TARGET = sri_qtdb
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
2) .h 文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QtSql>
#include <QtGui>
#include <QtCore>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
QSqlDatabase db;
QSqlTableModel *model;
//QTableWidget *table;
};
#endif // MAINWINDOW_H
3) .cpp 文件
a) main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
b) 主窗口.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setCentralWidget(ui->tableView);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("user");
db.setUserName("root");
db.setPassword("*********");
if(!db.open()){ qDebug()<< "Failed"; }
else
{
model = new QSqlTableModel(this);
model->setTable("new_joiners");
model->select();
ui->tableView->setModel(model);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
可用驱动程序:QSQLITE QMYSQL3 QMYSQL
我的输出总是“失败”。我究竟做错了什么?