[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bindings
Subject:    Re: [Kde-bindings] Hacking moc-generated code
From:       Eric Jardim <ericjardim () gmail ! com>
Date:       2005-08-31 5:33:02
Message-ID: 432ec6c50508302233514a0a43 () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


2005/8/31, Marcus <mathpup@mylinuxisp.com>:
> 
> I would like to hear more about this because getting signals and slots 
> working
> seems to be one of the hardest parts. I understand that Qt 4.x makes some
> changes, but I also gather that there is still a great deal of voodoo in 
> the
> moc-generated code.


Well, actually, signals and slots are working normally in python-qt4. I used 
a simple approach. I created dispatcher classes for each type of slot. It is 
impossible to connect a signal to a Python function. There must be a C++ 
slot. So I have a dispatcher class for every possible signature ex:
PythonSlot_int_int -> void slot(int, int)
and so on. Of course I have a script that write this code for me. You just 
have to say (textualy) which signatures you want to generate.

It is the only way I see to make it works. The limitation of this approach 
are new types of slot signatures. Well, we can solve this creating a central 
registry for slot dispachers. Hey, remember now... I've made this :) But 
needs more testing.
Returning to MOC, I just need to play with it, only because if I want to run 
Python extended classes (of QObject/QWidget) on C++ (like embedded C++ or 
using Python objects in QtDesigner). I am studing it, but I am not very sure 
that it will work. 

The problem is that the C++ metaobject is static. We need dynamic 
metaobjects! And that is the whole trick.


When I have worked on schemes to interact with signals and slots, I have
> always been torn between using things are not part of the Qt API whose
> details can only be discovered by reading the files that moc generates OR
> writing portable but complicated, bulky code with a great deal of 
> potential
> overhead. Qt goes to great lengths to make C++ less dangerous for
> programmers, but many of the techniques used make it difficult for non-C++
> languages to use Qt.
> 

Sure, but I think it is getting better. Try python-qt4 source and see what I 
did. I'll continue studing the moc files.

[Eric Jardim]

[Attachment #5 (text/html)]

2005/8/31, Marcus &lt;<a \
href="mailto:mathpup@mylinuxisp.com">mathpup@mylinuxisp.com</a>&gt;:<div><span \
class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px \
solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> I would \
like to hear more about this because getting signals and slots working<br>seems to be \
one of the hardest parts. I understand that Qt 4.x makes some<br>changes, but I also \
gather that there is still a great deal of voodoo in the <br>moc-generated \
code.</blockquote><div><br> Well, actually, signals and slots are working normally in \
python-qt4. I used a simple approach. I created dispatcher classes for each type of
slot. It is impossible to connect a signal to a Python function. There
must be a C++ slot. So I have a dispatcher class for every possible
signature ex:<br>
PythonSlot_int_int -&gt; void slot(int, int)<br>
and so on. Of course I have a script that write this code for me. You
just have to say (textualy) which signatures you want to generate.<br>
<br>
It is the only way I see to make it works. The limitation of this
approach are new types of slot signatures. Well, we can solve this
creating a central registry for slot dispachers. Hey, remember now...
I've made this :) But needs more testing.<br>
&nbsp;</div>Returning to MOC, I just need to play with it, only because
if I want to run Python extended classes (of QObject/QWidget) on C++
(like embedded C++ or using Python objects in QtDesigner). I am studing
it, but I am not very sure that it will work. <br>
<br>
The problem is that the C++ metaobject is static. We need dynamic metaobjects! And \
that is the whole trick.<br> <br>
<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); \
margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">When I have worked on schemes to \
interact with signals and slots, I have<br>always been torn between using things are \
not part of the Qt API whose <br>details can only be discovered by reading the files \
that moc generates OR<br>writing portable but complicated, bulky code with a great \
deal of potential<br>overhead. Qt goes to great lengths to make C++ less dangerous \
for <br>programmers, but many of the techniques used make it difficult for \
non-C++<br>languages to use Qt.<br></blockquote></div><br> Sure, but I think it is \
getting better. Try python-qt4 source and see what I did. I'll continue studing the \
moc files.<br> <br>
[Eric Jardim]<br>



_______________________________________________
Kde-bindings mailing list
Kde-bindings@kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic