c++ - 在qt中使用QStandardItemModel显示QSQLite数据库

标签 c++ qt sqlite qt5 qtableview

<分区>

我有一个QSQLite 数据库,我从中读取了所有值。现在,我想使用 QStandardItemModel 将整个数据库显示到 QTableView 上。

我该怎么做?

最佳答案

这个回答并没有试图直接回答问题,因为我认为有更好的选择是作者不知道的,但我试图引导他选择更好的选择。因此,我提出以下建议:

要在 QTableView 中显示数据库的信息,建议使用 QSqlTableModel .

The QSqlTableModel class provides an editable data model for a single database table.

QSqlTableModel is a high-level interface for reading and writing database records from a single table. It is built on top of the lower-level QSqlQuery and can be used to provide data to view classes such as QTableView.

例如:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open())
    qDebug()<< "Cannot open database"

QSqlTableModel *model = new QSqlTableModel;
model->setTable("person");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();

QTableView view;
view.setModel(model)

有关更多信息,我建议阅读以下内容:

此选项的优点:

  • 该类会自动识别字段及其类型。

  • 也可用于以编程方式访问数据库,而不将其绑定(bind)到 View 。

  • 如果您需要添加过滤器,您必须使用 setFilter()如果您需要订购,可以使用 setSort() .

关于c++ - 在qt中使用QStandardItemModel显示QSQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573213/

相关文章:

c++ - Qcheckbox 在 QT -c++ 中始终选中至少一个选项

c++ - 地址和指针地址有什么区别?

c++ - 如何保持循环直到函数返回?

c++ - 如何处理 C++ 中的命名空间?

iphone - sqlite 与 mysql iPhone 有多相似

android - 尝试写一个只读数据库......但我不是

SQLite FireDAC 尾随空格

c++ - 目标眼自动更新 : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

c++ - 带有初始化列表的空构造函数是否被认为是微不足道的?

C 的跨平台高级小部件工具包