使用 QSqlQuery 和 table 视图

Using QSqlQuery and table view

我正在尝试将基本搜索功能添加到我的项目中,因此我创建了一个搜索栏和一个搜索按钮,单击该按钮后我想查询数据库并在 table 视图小部件上显示结果.

但是我仍然不太明白如何向 table 添加数据,我尝试创建一个 QsqlQuery 并使用 table 小部件的 setQuery 方法,但是当我单击搜索按钮没有任何反应。 我做错了什么?

这是我的代码。

def searchEvent(self):
  '''
  Send appropriate search query and display results on the tableView
  '''
  # Connect to the database
  db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
  db.setDatabaseName("data.sqlite3")
  db.open()

  # Prepare query
  query = QtSql.QSqlQuery(db)
  query.prepare("SELECT * FROM SetInfo_view WHERE Name LIKE(?)")
  query.bindValue(0, self.searchLineEdit.text())

  # Prepare table model
  tableModel = QtSql.QSqlQueryModel()
  tableModel.setQuery(query)
  self.tableView.setModel(tableModel)
  self.tableView.show()
  db.close()

提前致谢。

阅读文档后,我发现有必要在将查询作为模型添加到 table 视图之前实际执行查询,如下所示:

def searchEvent(self):
  '''
  Send appropriate search query and display results on the tableView
  '''
  # Connect to the database
  db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
  db.setDatabaseName("data.sqlite3")
  db.open()

  # Prepare query
  query = QtSql.QSqlQuery(db)
  query.prepare("SELECT * FROM SetInfo_view WHERE Name LIKE(?)")
  query.bindValue(0, self.searchLineEdit.text())
  query.exec_()

  # Prepare table model
  tableModel = QtSql.QSqlQueryModel()
  tableModel.setQuery(query)
  self.tableView.setModel(tableModel)
  self.tableView.show()
  db.close()

来源: