QSqlTableModel 与 QTableView 如何连接?

How to connect QSqlTableModel with QTableView?

我想要一个连接 QSqlTableModel 和 QTableView 的简单例子, 将 QSqlTableModel 连接到数据集文件 (*.db),然后将其连接到 QTableView ?

半代码:

from PyQt5 import QtWidgets, QtGui, QtCore, QtSql


class Main(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        layout = QtWidgets.QVBoxLayout()
        self.table = QtWidgets.QTableView()

        layout.addWidget(self.table)
        self.setLayout(layout)





if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.resize(600, 600)
    main.show()
    app.exec_()

过程是:

  • 通过QSqlDatabase打开数据库
  • 然后将table加载到模型中,然后
  • 最后在视图中设置模型。
if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)

    db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName("/path/of/database.db")
    if not db.open():
        sys.exit(-1)

    model = QtSql.QSqlTableModel()
    model.setTable("your_table")
    model.select()

    view = QtWidgets.QTableView()
    view.setModel(model)
    view.show()

    sys.exit(app.exec_()

注意:在sqlite的情况下,如果数据库不存在那么它会创建它所以db.open()很少returnsfalse.