[Kde-perl] Overloading of Qt::ToolTip::maybeTip doesn't work
Richard Dale
Richard_Dale at tipitina.demon.co.uk
Thu Oct 28 02:22:03 CEST 2004
On Wednesday 27 October 2004 22:48, Ole Christensen wrote:
> Hi,
>
> I am trying to implement a dynamic tooltip. The problem is that
> overloading Qt::ToolTip::maybeTip does not work for me. I already have
> reimplemented virtual functions in perl, but for some reason it does not
> work for maybeTip. QToolTip is not a subclass of QObject. Does that matter?
>
> When I switch on debugging of virtual functions I get:
>
> virtual 0x8772ea0->QToolTip::maybeTip() called
> Cannot find object for virtual method
>
> I am using
> PerlQt 3.008
> Qt 3.3.3
> perl 5.8.2
I had the same problem as this with qtruby. Here is the entry from the qtruby
ChangeLog:
* If a class doesn't have a virtual destructor, then no mapping was being
kept from the C++ instance to the corresponding ruby value. If the class
had virtual method callbacks, this meant that the ruby instance couldn't
be found, and the callback couldn't be made.
* Hence, the Qt::ToolTip callback in examples/qt-examples/tooltip didn't
work, as that class doesn't have a virtual destructor.
For PerlQt, you would need to remove this test from the mapObject() function
in Qt.xs:
if(!c.hasVirtual() ) {
XSRETURN_EMPTY;
}
void
mapObject(obj)
SV *obj
CODE:
smokeperl_object *o = sv_obj_info(obj);
if(!o)
XSRETURN_EMPTY;
SmokeClass c( o->smoke, o->classId );
// if(!c.hasVirtual() ) {
// XSRETURN_EMPTY;
// }
mapPointer(obj, o, pointer_map, o->classId, 0);
So that a mapping of the pointer from a C++ instance to a perl instance is
always kept.
-- Richard
More information about the Kde-perl
mailing list