libqtlua-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libqtlua-list] Accessing QObject inside a property in Lua


From: Gustavo de Sá Carvalho Honorato
Subject: Re: [Libqtlua-list] Accessing QObject inside a property in Lua
Date: Mon, 24 Jan 2011 17:15:23 -0200

2011/1/24 Gustavo de Sá Carvalho Honorato <address@hidden>:
> 2011/1/21 Alexandre Becoulet <address@hidden>:
>> On Tuesday, January 18, 2011 01:16:09 pm you wrote:
>>> 2011/1/17 Gustavo de Sá Carvalho Honorato <address@hidden>:
>>> > 2011/1/17 Alexandre Becoulet <address@hidden>:
>>> >> On Monday, January 17, 2011 07:39:37 pm you wrote:
>>> >>
>>> >> Hi,
>>> >>
>>> >>> >> > I guessed that. The problem is once registered as a Qt meta type,
>>> >>> >> > MainWindow* and QObject* are just different meta types. Qt meta
>>> >>> >> > types system does not enable QtLua to guess at runtime that
>>> >>> >> > MainWindow* can be interpreted as a QObject*, due to C++
>>> >>> >> > inheritance rules.
>>> >>
>>> >> I found no way to even detect if the type is a pointer to a QObject or
>>> >> if its an array of floats or anything else from the registered meta
>>> >> type id. QMetaType is not designed to return a pointer to the
>>> >> QMetaObject when relevant. Any idea?
>>> >
>>> > Ok, I think I misunderstood the problem. The problem is to retrieve
>>> > the QMetaObject from an metatype id. I'll try to think in something.
>>>
>>> I haven't had time to check this, but I was thinking in how
>>> QScriptEngine solve this problem. Do you know if QScriptEngine can do
>>> this conversions? If yes, our answer should be inside the
>>> QScriptEngine source code.
>>
>> Didn't checked that yet, but you are right, QScriptEngine is the right place
>> to dig.
>
> Have you tried qVariantCanConvert<QObject*>() ? It seems to be what we
> are looking for.

Another suggestion from Qt mailing list was:

QObject *object = myVariant.value<QObject*>();
if (object)
   QMetaObject *metaObject = object->metaObject();

>
>>
>> In the mean time you can register pointers to QObject based classes with two
>> lines of code as shown on the example. This should be a minor issue unless 
>> you
>> plan to register a lot of such pointer types. What do you think?
>>
>> --
>> Alexandre
>>
>>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]