QTableView和QSqlQueryModel的联合使用

匿名 (未验证) 提交于 2019-12-03 00:25:02

QSqlQueryModel类为SQL结果集提供了只读数据模型。所以当前示例只显示不操作。
如果想在视图直接操作数据库内容,需要自己封装一个类且继承QSqlQueryModel,重写里面的虚函数。

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlQueryModel>

QSqlDatabase *m_db;
QSqlQuery *m_qy;
QSqlQueryModel *m_model;

第一步//打开数据库
m_db = new QSqlDatabase;
*m_db = QSqlDatabase::addDatabase("QMYSQL");//链接MYSQL的驱动
m_db->setHostName("127.0.0.1");//设置主机名
m_db->setPort(3306);//配置端口号
m_db->setDatabaseName("myDBtest");//打开"myDBtest"数据库
m_db->setUserName("root");//账号
m_db->setPassword("root");//密码
if(m_db->open()){
qDebug()<<"-------------------";
}else{
qDebug()<<"+++++++++++";
}
m_qy = new QSqlQuery;

第二步//设置QSqlQuery初始化
m_model = new QSqlQueryModel;
m_model->setQuery(QString("select receive_num,good_num,original_len,color_backups "
"from waitcheck"));
m_model->setHeaderData(0, Qt::Horizontal, tr("收货码"));
m_model->setHeaderData(1, Qt::Horizontal, tr("商品编码"));
m_model->setHeaderData(2, Qt::Horizontal, tr("原长"));
m_model->setHeaderData(3, Qt::Horizontal, tr("颜色"));

ui->tableView->setModel(m_model);

ui->tableView->setAlternatingRowColors(true);//使表格颜色交错功能为真
ui->tableView->setStyleSheet("QTableView{background-color: rgb(250, 250, 250);"
"alternate-background-color: rgb(234, 234, 234);}");//设置表格颜色

效果图:
数据库内容

显示在界面的内容


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!