[QtScript] registering and handling QPair



  • I have a few slots that return a QPair and I would like to call them from a script.

    I'm trying to register QPair but @Q_DECLARE_METATYPE(QPair<bool,QString>)@ won't compile.
    I've found this commit: http://gitorious.org/qtscript-smoke/qtscript-smoke/commit/3edb118abfbdd61f0de00e66cd45f65263f77900/diffs
    where is declared:
    @/*
    Allows a metatype to be declared for a type containing a single comma.
    For example:
    Q_DECLARE_METATYPE2(QList<QPair<QByteArray,QByteArray> >)
    */
    #define Q_DECLARE_METATYPE2(TYPE1, TYPE2)
    QT_BEGIN_NAMESPACE
    template <>
    struct QMetaTypeId< TYPE1,TYPE2 >
    {
    enum { Defined = 1 };
    static int qt_metatype_id()
    {
    static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0);
    if (!metatype_id)
    metatype_id = qRegisterMetaType< TYPE1,TYPE2 >( #TYPE1 "," #TYPE2 );
    return metatype_id;
    }
    };
    QT_END_NAMESPACE

    @
    This time @Q_DECLARE_METATYPE2(QPair<bool,QString>)@ will compile but it triggers an infinitely recursive loop at execution.

    Any help will be much appreciated


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.