简单操作:Qt+MySQL显示数据库表中数据
数据库中相关信息如下:
程序运行界面:
程序源代码如下:
项目文件 QuesSQL.pro
#-------------------------------------------------
#
# Project created by QtCreator 2019-07-24T08:49:23
#
#-------------------------------------------------
QT += core gui
QT += sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QuesSQL
TEMPLATE = app
SOURCES += main.cpp\
quessql.cpp
HEADERS += quessql.h
头文件 quessql.h
#ifndef QUESSQL_H
#define QUESSQL_H
#ifdef _MSC_VER
#pragma execution_character_set("utf-8")
#endif
#include <QWidget>
#include <QDebug>
#include <QtSql/QSqlQuery>
#include <QSqlTableModel>
#include <QTableView>
#include <QHeaderView>
#include <QSqlQuery>
#include <QHBoxLayout>
#include <QtSql/QtSql>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <vector>
class QuesSQL : public QWidget
{
Q_OBJECT
public:
QuesSQL(QWidget *parent = 0);
~QuesSQL();
QHBoxLayout *tableHLayout1;
QSqlTableModel *model1;
QTableView *view1;
QMysql_init();
private:
QSqlDatabase _mysql;
};
#endif // QUESSQL_H
源文件 main.cpp
#include "quessql.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QuesSQL w;
w.show();
return a.exec();
}
源文件 quessql.cpp
#include "quessql.h"
enum UserInfoIndex
{
id = 0,
userName = 1,
userBirth = 2,
userAge = 3,
userSex = 4,
userCheck = 5,
userPhone = 6,
userDoctor = 7,
};
QuesSQL::QuesSQL(QWidget *parent)
: QWidget(parent)
{
QMysql_init();
tableHLayout1 = new QHBoxLayout(this);
model1 = new QSqlTableModel(); //创建表格模型
view1 = new QTableView; //创建表格视图
view1->setModel(model1); //设置表格视图显示表格模型
view1->setSelectionMode(QAbstractItemView::SingleSelection); //设置表格选择模式为单选
view1->setSelectionBehavior(QAbstractItemView::SelectRows); //设置表格只能选行
//view1->resizeColumnsToContents(); //重设表格内容
view1->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置表格无法编辑
view1->setAlternatingRowColors(true); //隔行换色
view1->setColumnHidden(0,true); //隐藏第1列
view1->horizontalHeader()->setStretchLastSection(true); //设置表头最后一行占满
view1->setStyleSheet(
"QTableView{border-radius: 4px;border:3px solid #b6b6b6;}");
tableHLayout1->addWidget(view1);
model1->setTable("t_user");
model1->setHeaderData(id,Qt::Horizontal,"id");
model1->setHeaderData(userName,Qt::Horizontal,"姓名 ");
model1->setHeaderData(userBirth,Qt::Horizontal,"出生日期");
model1->setHeaderData(userAge,Qt::Horizontal,"年龄 ");
model1->setHeaderData(userSex,Qt::Horizontal,"性别 ");
model1->setHeaderData(userCheck,Qt::Horizontal,"检查时间");
model1->setHeaderData(userPhone,Qt::Horizontal,"联系电话");
model1->setHeaderData(userDoctor,Qt::Horizontal,"检查医生");
model1->select();
view1->setColumnHidden(0,true); //隐藏第1列
view1->resizeColumnsToContents(); //重设表格内容
qDebug() << "VIEW ok!";
}
QuesSQL::~QuesSQL()
{
}
QuesSQL::QMysql_init()
{
_mysql = QSqlDatabase::addDatabase("QMYSQL");
_mysql.setHostName("localhost");
_mysql.setDatabaseName("hospital_sql");
_mysql.setUserName("root");
_mysql.setPassword("");
qDebug() << "MySQL ok!";
if(_mysql.open())
{
qDebug() << "MySQL is established!";
}
else
{
qDebug() << "MySQL init fail!";
}
return 0;
}
其中,在安装MySQL数据库到与QT连接配置时,出现了一系列问题,成功解决的链接如下: