Russian Qt Forum
Ноябрь 22, 2024, 06:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не получается из скрипта получить доступ к Q_ENUMS  (Прочитано 4226 раз)
dmitriym
Гость
« : Март 23, 2015, 10:46 »

Qt 5.4.1 msvc 2013 OpenGL x64

Класс:
Код:
#ifndef A_H
#define A_H
//------------------------------------------------------------------------------
#include <QtCore>
#include <QtScript>
//------------------------------------------------------------------------------
class A : public QObject
{
    Q_OBJECT
    Q_ENUMS(E)
public:
    enum E {a,b,c};

    explicit A(QObject *_parent = nullptr);
    virtual ~A();
    //------------------------------------------------------------------------------
    static QScriptValue qscriptCtor(QScriptContext* _context, QScriptEngine *_engine)
    {
        return _engine->newQObject(new A,
                                   QScriptEngine::ScriptOwnership
                                   );
    }
    //------------------------------------------------------------------------------
public:
    static void Init(QScriptEngine *_engine)
    {
        _engine->globalObject().setProperty("A", _engine->newQMetaObject(&QObject::staticMetaObject,
                                                                         _engine->newFunction(qscriptCtor)
                                                                         )
                                            );

    }
    //------------------------------------------------------------------------------

signals:

public slots:
};

#endif // A_H

Код:
#include "a.h"
//------------------------------------------------------------------------------
A::A(QObject *_parent) : QObject(_parent)
{

}
//------------------------------------------------------------------------------
A::~A()
{

}
//------------------------------------------------------------------------------

Скрипт:
Код:
print(A.a);
var t = new A();
print(t);
print(t.a);

A() как конструктор срабатывает верно, но A.a == undefined. Что я не так делаю?
Записан
RSATom
Гость
« Ответ #1 : Март 23, 2015, 13:08 »

Рекомендую попробовать поменять первую букву элементов Enum на заглавную. В QML из-за этого возникают проблемы, возможно здесь та же ситуация.
Записан
dmitriym
Гость
« Ответ #2 : Март 23, 2015, 13:12 »

Попробовал поменять - результат тот же.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 21.