- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二十六、Qt数据库(六)QSqlTableModel
本文章原创于 转载请注明出处。
在上一篇我们讲到只读的QSqlQueryModel也可以使其可编辑,但是很麻烦。Qt
提供了操作单表的QSqlTableModel,如果我们需要对表的内容进行修改,那么
我们就可以直接使用这个类。
QSqlTableModel,该类提供了一个可读写单张SQL表的可编辑数据模型。我们
下面就对其的几个常用功能进行介绍,分别是修改,插入,删除,查询,和排
序。
在开始讲之前,我们还是新建Qt4 Gui Application工程,我这里工程名为
tableModel ,然后选中QtSql模块,Base class选QWidget。工程建好后,添
加C++ Header File ,命名为database.h,更改其内容如下:
#ifndef DATABASE_H
#define DATABASE_H
#include QSqlDatabase
#include QSqlQuery
#include QObject
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“database.db”);
if(!db.open()) return false;
QSqlQuery query;
query.exec(QObject::tr(“create table student (id int primary key,
name vchar)”));
query.exec(QObject::tr(“insert into student values (0,’刘
明’)”));
query.exec(QObject::tr(“insert into student values (1,’陈
刚’)”));
query.exec(QObject::tr(“insert into student values (2,’王
红’)”));
return true;
}
#endif // DATABASE_H
为了在数据库中能使用中文,我们使用了QObject类的tr()函数。而在下面的
main()函数中我们也需要添加相应的代码来支持中文。
然后将main.cpp的文件更改如下:
#include QtGui/QApplication
#include “widget.h”
#include “database.h”
#include QTextCodec
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
if(!createConnection())
return 1;
Widget w;
w.show();
return a.exec();
}
下面我们打开widget.ui,设计界面如下:
其中的部件有Table View 和 Line Edit,其余是几个按钮部件。
然后在widget.h中加入头文件: #include QSqlTableModel
在private中声明对象:QSqlTableModel *model;
因为我们要在不同的函数中使用model对象,所以我们在这里声明它。
我们到widget.cpp文件中的构造函数里添加如下代码:
model = new QSqlTableModel(this);
model-setTable(“student”);
model-setEditStrategy(QSqlTableModel::OnManualSubmit);
model-select(); //选取整个表的所有行
// model-removeColumn(1); //不显示name属性列,如果这时添加记录,则该
属性的值添加不上
ui-tableView-setModel(model);
//
ui-tableView-setEditTriggers(QAbstractItemView::NoEditTriggers);
//使其不可编辑
此时运行程序,效果如下:
可以看到,这个模
文档评论(0)