我在我的gui中使用自定义QTableView和自定义QSqlTableModel。 我想要做的是定义一个插槽“markOneRead”,当用户点击一行时,它会将布尔值变为false。我的数据库定义如下:
标题| ......某些领域...... | the_boolean
数据库是Sqlite数据库。
我想要做的基本上是一个读/未读系统。从未单击该行时,布尔值设置为True。单击该行时,布尔值变为False。
但是我无法将布尔值变为False。这是我的工作:
def markOneRead(self, element):
"""Slot to mark an article read"""
new = self.tableau.model().index(element.row(), 12).data()
if new == "false":
return
else:
new_index = self.tableau.model().index(element.row(), 12)
print(self.modele.setData(new_index, False))
它总是打印False(所以setData方法不起作用)。
以下是我的模型实现:
class ModelPerso(QtSql.QSqlTableModel):
def __init__(self):
super(ModelPerso, self).__init__()
def setQuery(self, query):
self.query = QtSql.QSqlQuery()
self.query.prepare(query.executedQuery())
self.query.exec_()
results = QtSql.QSqlTableModel.setQuery(self, self.query)
while self.canFetchMore():
self.fetchMore()
return results
def select(self):
results = QtSql.QSqlTableModel.select(self)
while self.canFetchMore():
self.fetchMore()
return results
def setData(self, index, value, role=QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
return super(QtSql.QSqlTableModel, self).setData(index, value, role)
请你帮个忙吗?