setData始终返回False

时间:2014-11-09 17:03:27

标签: python sqlite pyqt

我在我的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)

请你帮个忙吗?

0 个答案:

没有答案