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);}");//设置表格颜色
效果图:
数据库内容
显示在界面的内容
转载请标明出处:QTableView和QSqlQueryModel的联合使用