[PyQt] Problem using signal beforeInsert

bar tomas bartomas at gmail.com
Thu Jan 21 15:05:56 GMT 2010

Many thanks for your help. I've corrected the code following your
suggestion, but the test method still does not get called, although
new records get submitted to the database:

self.model = QSqlRelationalTableModel(self)
self.connect(self.model, SIGNAL("beforeInsert(QSqlRecord *)"), self.test)

def test(self, record):
       print "test"

I was wondering, it is the QSqlRelationalTableModel object that emits
the beforeInsert signal, or have I got that wrong?

Thanks again

On Thu, Jan 21, 2010 at 1:43 PM, Phil Thompson
<phil at riverbankcomputing.com> wrote:
> On Thu, 21 Jan 2010 13:38:45 +0000, bar tomas <bartomas at gmail.com> wrote:
>> Hi,
>> I've created a QDataWidgetMapper that uses a QSqlRelationalTableModel
>> to edit the records of database table.
>> I've tried using the signal beforeInsert to do some validation before
>> the data is submitted to the database but I have a problem
>> intercepting the signal (the slot method test  just never executes).
>> Here is a snippet of the relevant code:
>> self.model = QSqlRelationalTableModel(self)
>> self.connect(self.model, SIGNAL("beforeInsert(record)"), self.test)
>> def test(self, record):
>>     print "test"
>> Is there something wrong in the way I've declared the connection?
> Yes - use the type of the signal argument (ie. QSqlRecord) not its name. Or
> use the new-style connection API which will do it for you.
> Phil

More information about the PyQt mailing list