我正在编写一个简单的学生成绩管理器,用于在pyqt上练习编程(我不想再使用糟糕的visual basic)。但我在选择数据模型时遇到了很大的问题。
我发现,首先,它是一个伟大的模型,自动更新。问题是,我需要使用大量的sql(QSqlTableModelJOIN)来从数据库中选择数据。WHERE仅具有QSqlTableModelselect()
然后我找到了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()等设置查询。

09-28 12:05