我正在编写一个简单的学生成绩管理器,用于在pyqt上练习编程(我不想再使用糟糕的visual basic)。但我在选择数据模型时遇到了很大的问题。
我发现,首先,它是一个伟大的模型,自动更新。问题是,我需要使用大量的sql(QSqlTableModel
,JOIN
)来从数据库中选择数据。WHERE
仅具有QSqlTableModel
和select()
。
然后我找到了filter()
,但它是只读的。所以我重写了它的QSqlQueryModel
方法。所以现在是读写。不幸的是,setData()
的可用功能比QSqlQueryModel
少。
如您所见,如果我能在QSqlTableModel
中使用sql,我就能解决所有问题。
所以…?
最佳答案
QSqlTableModel
具有setQuery
方法,您可以使用该方法设置自定义查询,例如:
model = QSqlTableModel()
query = QSqlQuery(your_query)
model.setQuery(query)
然而,Qt documentation表示:
此函数只调用qsqlquerymodel::setquery(query)。通常不应在qsqltablemodel上调用它。而是使用setTable()、setSort()、setFilter()等设置查询。