Qt学习(五)

简单操作: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连接配置时,出现了一系列问题,成功解决的链接如下:

MySQL安装到最后一步未响应(不需要卸载的解决方法)

详述 MySQL 数据库输入密码后闪退的问题及解决方案

解决问题 Qt + MySql:"QSqlDatabase: QMYSQL driver not loaded"

发布了16 篇原创文章 · 获赞 7 · 访问量 925

猜你喜欢

转载自blog.csdn.net/weixin_41108819/article/details/97266145