开发工具:Qt Creator 4.2.1 (Community)
开发平台:windows 7
数据库:MySql 5.5.45
一、在.pro配置文件中添加添加数据库
QT += core gui sql #后面追加上sql
二、mywidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QSqlDatabase> #include <QDebug> #include <QMessageBox> #include <QSqlTableModel> #include <QSqlError> #include <QSqlQuery> #include <QSqlRecord> #include <QTextCodec> namespace Ui { class MyWidget; } class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); ~MyWidget(); private slots: void on_pushButtonAdd_clicked(); void on_pushButtonConfirm_clicked(); void on_pushButtonCancel_clicked(); void on_pushButtonDelete_clicked(); void on_pushButtonFind_clicked(); private: Ui::MyWidget *ui; //声明一个表格模型指针 QSqlTableModel *model; }; #endif // MYWIDGET_H
三、mywidget.cpp
#include "mywidget.h" #include "ui_mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) { ui->setupUi(this); //设置编码,有时候查出来的中文是乱码的,这里设置为utf-8 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); //打印QT支持的数据库驱动 qDebug() << QSqlDatabase::drivers(); //指定MYSQL数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //连接数据库 db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123456"); db.setPort(3306); db.setDatabaseName("test"); //db.exec("set names gb2312"); //打开数据库 if(!db.open()){ //数据库打开失败 QMessageBox::warning(this, "warming", db.lastError().text()); return; }else{ QMessageBox::information(this, "msg", "连接成功"); } //设置模型 model = new QSqlTableModel(this); //指定使用哪个数据表 model->setTable("student"); //把model放在view里面 ui->tableViewShow->setModel(model); //显示model里的数据 model->select(); //设置表头 model->setHeaderData(0,Qt::Horizontal, "编号"); model->setHeaderData(1,Qt::Horizontal, "姓名"); model->setHeaderData(2,Qt::Horizontal, "密码"); //设置model的编辑模式,手动提交修改 model->setEditStrategy(QSqlTableModel::OnManualSubmit); //禁止对数据库进行修改 //ui->tableViewShow->setEditTriggers(QAbstractItemView::NoEditTriggers); } MyWidget::~MyWidget() { delete ui; } //增加 void MyWidget::on_pushButtonAdd_clicked() { //添加空记录 //获取空记录 QSqlRecord record = model->record(); //获取行号 int row = model->rowCount(); model->insertRecord(row,record); } //确定 void MyWidget::on_pushButtonConfirm_clicked() { model->submitAll(); //提交动作 } //取消 void MyWidget::on_pushButtonCancel_clicked() { model->revertAll(); //取消所有动作 model->submitAll(); //提交动作 } //删除 void MyWidget::on_pushButtonDelete_clicked() { //获取选中的模型 QItemSelectionModel *sModel = ui->tableViewShow->selectionModel(); //取出模型中的索引 QModelIndexList list = sModel->selectedRows(); //删除所有选中的行 for(int i=0; i < list.size(); i++){ model->removeRow( list.at(i).row() ); } } //查找 void MyWidget::on_pushButtonFind_clicked() { QString keywords = ui->lineEditKeywords->text(); QString str = QString("uname like '\%%1\%'").arg(keywords); //设置过滤条件 model->setFilter(str); model->select(); }
四、界面效果
版权声明:
此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生]
https://www.sindsun.com/articles/16/97
[若此文确切存在侵权,请联系本站管理员进行删除!]
--THE END--