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

PyQt错误:没有这样的信号QObject::dataChanged,qt,pyqt,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 * impo

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
(字符串)、
Size
(整数)。它可以是空的,同样的错误

文件
ui\u DBMainWindow.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\blizzard\Projects\PyQt\DB4\DBMainWindow.ui'
#
# Created: Fri Mar 26 22:04:00 2010
#      by: PyQt4 UI code generator 4.4.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 696)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.TableView = QtGui.QTableView(self.centralwidget)
        self.TableView.setGeometry(QtCore.QRect(10, 20, 551, 451))
        self.TableView.setObjectName("TableView")
        self.btAdd = QtGui.QPushButton(self.centralwidget)
        self.btAdd.setGeometry(QtCore.QRect(570, 20, 91, 24))
        self.btAdd.setObjectName("btAdd")
        self.btDel = QtGui.QPushButton(self.centralwidget)
        self.btDel.setGeometry(QtCore.QRect(570, 80, 91, 24))
        self.btDel.setObjectName("btDel")
        self.btEdit = QtGui.QPushButton(self.centralwidget)
        self.btEdit.setGeometry(QtCore.QRect(570, 50, 91, 24))
        self.btEdit.setObjectName("btEdit")
        self.leQueryError = QtGui.QLineEdit(self.centralwidget)
        self.leQueryError.setGeometry(QtCore.QRect(10, 550, 551, 20))
        self.leQueryError.setObjectName("leQueryError")
        self.btQuery = QtGui.QPushButton(self.centralwidget)
        self.btQuery.setGeometry(QtCore.QRect(570, 480, 75, 24))
        self.btQuery.setObjectName("btQuery")
        self.teQuery = QtGui.QTextEdit(self.centralwidget)
        self.teQuery.setGeometry(QtCore.QRect(10, 480, 551, 64))
        self.teQuery.setObjectName("teQuery")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 19))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "База данных", None, QtGui.QApplication.UnicodeUTF8))
        self.btAdd.setText(QtGui.QApplication.translate("MainWindow", "Добавить", None, QtGui.QApplication.UnicodeUTF8))
        self.btDel.setText(QtGui.QApplication.translate("MainWindow", "Удалить", None, QtGui.QApplication.UnicodeUTF8))
        self.btEdit.setText(QtGui.QApplication.translate("MainWindow", "Редактировать", None, QtGui.QApplication.UnicodeUTF8))
        self.btQuery.setText(QtGui.QApplication.translate("MainWindow", "Запрос", None, QtGui.QApplication.UnicodeUTF8))

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

您能从应用程序中提供一些代码吗? 其中是否有以下类型或其后代的实例?
QAbstractItemModel
QAbstractItemView
,例如
QListView
QTreeView
,等等。试着捕捉任何地方,在那里你把一些东西连接到某个地方,特别是那个信号。您需要看看,当代码中实例化的这些后代类型发出
dataChanged
时,感谢上帝,Qt是开源的。 您的应用程序似乎认为某个对象是QAbstractItemModel或QAbstractItemView子体,不管它是不是,并且尝试将插槽连接到它的
数据更改
信号


注:当您通过uic编译某些接口时,生成的类继承自
对象
,而不是
QtGui.QMainWindow
或smth。可能有某种关联。

请提供完整的示例,此脚本不包含ui\u DbainWindow和对1.db的引用。应该是什么?