我试图通过显示QMessageBox来提醒用户输入无效数据。问题是它给了我这个错误:TypeError:参数与任何重载调用都不匹配。我写的代码是:
def setModelData(self, editor, model, index):
if index.column() == 1:
data = editor.text()
query = QSqlQuery()
query.exec_("select * from gaceta where nombre='%s'" % (data,))
if query.next():
QMessageBox.warning(self, 'Error', 'Ya hay una Gaceta con ese nombre')
else:
model.setData(index, QVariant(data))
我在数据库中查找同名的元素,如果找到任何元素,我不会设置数据,而是通知用户验证错误。如果有更好的方法,请告诉我
看起来您是在
QItemDelegate
的子类中调用它的。QItemDelegate
子类QAbstractItemDelegate
又是子类QObject
。你知道吗QMessageBox.warning
的第一个参数必须是QWidget
的导数,正如我上面的解释所示,QItemDelegate
不是。因此,您将得到一个错误,即传递给QMessageBox.warning
的参数的类型错误。你知道吗因此,您需要一个实际的
QWidget
,而不是传递self
。您可以尝试使用editor
变量,因为它包含QWidget派生(您的文本框)。我不明白为什么那样不行。但是,如果您在使用该解决方案时遇到了问题,您可能需要将另一个小部件的引用传递到QItemDelegate
构造函数中,以便以后存储和引用。你知道吗相关问题 更多 >
编程相关推荐