Qt 下数据库文件和tableModel如何链接起来的

u010688690 2013-10-16 11:22:25
代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // 建立数据库驱动
db.setDatabaseName("db"); // 打开数据库文件 db
if(!db.open()) // 如果打开失败,提示消息对话框
{
QMessageBox::critical(0, tr("Cannot open database"),
tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it."), QMessageBox::Cancel);
return;
}

db.close(); // 关闭数据库

QSqlTableModel *model; // 建立一个TableModel类
model = new QSqlTableModel();

QStringList list = model->database().tables(); // 得到db数据库文件中"表"
qDebug() << list.size(); // 显示所存在的"表"的个数
for (int i = 0; i < list.size(); ++i) // 敬爱那个所有的"表"名称显示出来
qDebug() << list.at(i).toLocal8Bit().constData() << endl;

model->setTable("person"); // 选定一个"表"

model->select(); //


问题:
我关闭了数据库文件(db.close())后,才新建了QSqlTableModel类,为什么通过
model->database().tables()可以取得该数据库文件中所有的"表"名?QSqlTableModel类是如何和数据库文件链接起来的?
...全文
155 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
RabinSong 2013-10-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/rabinsong/article/details/8452946, 看看这篇文章,重载data,将QTreeView,改为QTableView
ibm123 2013-10-18
  • 打赏
  • 举报
回复
这是因为QSqlTableModel构造中有个默认参数QSqlDatabase(),这个是全局默认的缺省数据库,就算你关闭了,会自动open()的。

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧