2

我正在编写一个简单的学生分数管理器,用于在 PyQt 上练习编程(我不想再使用糟糕的Visual Basic)。但是我在选择数据模型时遇到了一个大问题。

QSqlTableModel首先发现,它是一个很好的自动更新模型。麻烦的是,我需要使用大量的 SQL ( JOIN, WHERE) 从数据库中选择数据。QSqlTableModelselect()而且filter()只有。

然后我找到QSqlQueryModel了,但它是只读的。所以我重写了它的 setData()方法。所以它现在是读写的。不幸的是,QSqlQueryModel可用的功能比QSqlTableModel.

如您所见,如果我可以将 SQL 与 结合使用QSqlTableModel,我就可以解决所有问题。

所以...?

4

1 回答 1

2

QSqlTableModel有该setQuery方法,您可以使用它来设置自定义查询,例如:

model = QSqlTableModel()
query = QSqlQuery(your_query)
model.setQuery(query)

但是,Qt 文档指出:

这个函数简单地调用 QSqlQueryModel::setQuery(query)。通常不应在 QSqlTableModel 上调用它。相反,使用 setTable()、setSort()、setFilter() 等来设置查询。

于 2012-12-25T16:19:45.617 回答