[PyKDE] PYKDE Drag and drop

Jim Bublitz jbublitz at nwinternet.com
Mon Jun 19 18:53:06 BST 2000


On 18-Jun-00 Boudewijn Rempt wrote:
> On Sun, 18 Jun 2000, Phil Thompson wrote:
> 
>> Jim Bublitz wrote:
>> > 
>> > Two questions/problems with DND:
>> > 
>> > (using PYKDE 0.11/Qt 1.44/KDE 1.2)
>> > 
>> > 2. (This may indicate my unfamiliarity with Python)
>> > If I derive a widget, say from QListView, and want
>> > to multiply inherit QDropSite, how do I do the
>> > QDropSite init (it needs a pointer to the widget
>> > to install the event filter)? I have:
>> > 
>> > class  KFoo (QListView, QDropSite):
>> >      def __init__(self, parent):
>> >           QListView.__init__(self, parent)
>> > 
>> > Do I add:
>> > 
>> > QDropSite.__init__(self, self)  ??
>> > 
>> > Also, it seems to make a difference if I do that
>> > before or after the QListView call. Of course I
>> > can't test this, because (see 1) I'm not getting
>> > any events to test it with.
>> 
>> Sorry - you can't do this in Python. Both the QListView and the
>> QDropSite __init__ methods will create separate widgets. The bindings
>> only create wrappers for existing C++ classes - what you are trying to
>> do is to create a new C++ class, which you can't do from Python.
>> 
>> If there is no other way of achieving what you want then you will have
>> to create KFoo in C++ and then create a new Python module using SIP to
>> wrapp the KFoo class.
>>
> 
> It should be possible to find a solution in Python. Why not take 
> a leaf out of the visual basic book, and inherit by aggregation?
> Takes a bit more work, but should work like a charm:
> 
> class myClass(QWidget):
> 
>   def__init__(self, args):
>     self.listview=QListView(...)
>     self.dropsite=QDropSite(...)
>     
> Then define all the methods you need and have them call the
> right constituent method.
> 
>   def insertItem(...)
>     self.listview.insertItem(...)
>     

Two very fast responses! Thanks!

I've already tried something similar, except 
making "myClass" a descendant of QListView 
instead of QWidget, and I think there's a 
way to make that work - there's some details 
about receiving the Drag/Drop event msgs
and forwarding them to "myClass" IIRC. Don't 
recall the details, but it seemed doable from 
looking at the Qt code.

The problem I still have (snipped from the 
beginning of this message) is getting  
QDragObject or one of its descendants to work, 
so I can't really try this until that's solved.
I'm still doing some investigation on that, 
and will post again when either I find a fix 
or feel completely stumped again.

I noticed Phil requested in an archived
message to be notified about things that work.
This is part of a fairly large application
that uses a lot of the Qt stuff and some KDE
stuff (and a lot of Python modules) and 
everything else works great - this is the
first real snag I've hit  Even without a 
graphical design tool, this is a superior 
rapid application development environment. 
Thanks for all of your work.

Jim





More information about the PyQt mailing list