PyQt错误:没有这样的信号QObject :: dataChanged

时间:2010-03-26 10:59:00

标签: qt pyqt

PyQt应用程序工作正常,但当我关闭它时,Python会显示以下消息:

"Object::connect: No such signal QObject::dataChanged(QModelIndex,QModelIndex)"

这是什么原因?程序中没有dataChanged信号。

编辑: MWE证明了错误:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
import ui_DBMainWindow

global Mw, Table
Id, Name, Size = range(3)

class TTable():
    pass

Table = TTable()

class TMainWindow(QMainWindow, ui_DBMainWindow.Ui_MainWindow):

    def __init__(self, parent = None):
        global Table
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.showMaximized()
        self.mapper = QDataWidgetMapper(self)
        self.mapper.setModel(Table.Model)  # if this line is commented out, error disappear

def main():
    global Mw, Table
    QApp = QApplication(sys.argv)
    DB = QSqlDatabase.addDatabase("QSQLITE")
    DB.setDatabaseName("1.db")
    Table.Model = QSqlTableModel()
    Table.Model.setTable("MainTable")
    Table.Model.select()
    Mw = TMainWindow()
    QApp.exec_()

if __name__ == "__main__":
    main()

编辑2:1.db是包含表MainTable的数据库,包含3个字段:Id(自动增量隐藏整数键),Name(字符串),{{1} } (整数)。它可以是空的,同样的错误。

档案Size

ui_DBMainWindow.py

2 个答案:

答案 0 :(得分:1)

你能从你的应用程序中提供一些代码吗? 是否存在以下类型或其后代的任何实例?     QAbstractItemModelQAbstractItemView,例如QListViewQTreeView等等。尝试捕捉任何地方,你把东西连接到那些,而不是特别是那个信号。您需要查看,当代码中的这些后代类型发出dataChanged时,感谢上帝,Qt是开源的。     看来你的应用程序认为,某个对象是QAbstractItemModel或QAbstractItemView后代,不管它是不是,并试图将一个槽连接到它的dataChanged信号。

PS。当您通过uic编译某个接口时,生成的类继承自object,而不是QtGui.QMainWindow或smth。也许它有点相关。

答案 1 :(得分:0)

您正在调用的方法之一尝试将插槽连接到dataChanged上名为QObject的信号,这显然不会发出这样的信号。由于程序中没有dataChanged信号,因此某些方法可能会尝试间接执行此操作。此外,由于它在您关闭程序时发生,我首先会看到解释器关闭时执行的代码(即析构函数等)。