<div class="gmail_quote">On Fri, Dec 3, 2010 at 16:06, Phil Thompson <span dir="ltr"><<a href="mailto:phil@riverbankcomputing.com">phil@riverbankcomputing.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

On Fri, 3 Dec 2010 15:46:55 +0100, "KONTRA, Gergely" <<a href="mailto:pihentagy@gmail.com">pihentagy@gmail.com</a>><br>
wrote:<br>
<div><div></div><div class="h5">> Hi!<br>
><br>
> I am trying to connect the beforeInsert signal of a QSqlTableModel,<br>
> and having some problems.<br>
><br>
> I've found this similar thread:<br>
> <a href="http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg20117.html" target="_blank">http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg20117.html</a><br>
><br>
> However, I am using pyqt with py3k, so I prefer the new style signal<br>
> and slots, but I appreciate any working solution...<br>
><br>
> So my attempt based on the thread:<br>
> class BatteryMain(base_class, form_class):<br>
>        # ...<br>
>        def cycle_started(self, record):<br>
>                print("Inserting {!r}".format(record))<br>
><br>
>        def battery_load(self, filename):<br>
>                self.cycles_model = QSqlTableModel(db=self.battery_db)<br>
>                self.connect(self.cycles_model,<br>
> SIGNAL("beforeInsert(QSqlRecord<br>
> &)"), self.cycle_started)<br>
><br>
> RESULT:<br>
> QObject::connect: Cannot queue arguments of type 'QSqlRecord&'<br>
> (Make sure 'QSqlRecord&' is registered using qRegisterMetaType().)<br>
><br>
> Another attempt with new style signals and slots:<br>
><br>
> class BatteryMain(base_class, form_class):<br>
>        # ...<br>
>        @pyqtSlot('QSqlRecord &')<br>
>        def cycle_started(self, record):<br>
>                print("Inserting {!r}".format(record))<br>
><br>
>        def battery_load(self, filename):<br>
>                self.cycles_model = QSqlTableModel(db=self.battery_db)<br>
><br>
self.cycles_model.beforeInsert.connect(self.cycle_started)<br>
><br>
> RESULT:<br>
>  File "D:\prg\biQazo\biQazo.py", line 145, in battery_load<br>
>    self.cycles_model.beforeInsert.connect(self.cycle_started)<br>
> TypeError: connect() failed between beforeInsert(QSqlRecord) and<br>
unislot()<br>
><br>
> Could anybody tell me the correct syntax, please?<br>
<br>
</div></div>It's not a syntax problem.<br>
<br>
Are you using threads?<br></blockquote><div><br>Yes, I am using threads. Is it valid to insert into a QSqlTableModel a new row in a QThread?<br>I have a worker thread, which collects data, and inserts it into the QSqlTableModel, and I'd like to get notified with this beforeInsert signal in the GUI thread.<br>

</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
I would guess that you can't use signals that take a QSqlRecord across<br>
threads, probably because they are not passed as const (to allow them to be<br>
updated by a connected slot).<br></blockquote><div>That sounds sad. I thought this signal will make it easy to communicate between threads.<br>Then what is the solution to communicate between the worker thread, and the main GUI thread? Cutsom signal?<br>

<br>thanks<br>Gergo<br></div></div>