Russian Qt Forum

Qt => Вопросы новичков => Тема начата: fisenkdima от Январь 12, 2014, 16:07



Название: Несколько вопросов о QtScript
Отправлено: fisenkdima от Январь 12, 2014, 16:07
Допустим, мы имеем следующий класс:

Код:
class Shell : public QObject
{
    Q_OBJECT
    Q_PROPERTY( QVector<Effect> effects READ getEffects WRITE setEffects NOTIFY effectsChanged )

public:
    explicit            Shell( QObject * parent = 0 );

signals:
    void                burst();
    void                effectsChanged( const Effect & );

public slots:
    void                burstUp();
    const QVector<Effect> &
                        getEffects() const;
    void                setEffects( const QVector<Effect> & effects );

private:
    QVector<Effect>     _effects;

};

Как видите, в нём есть поле _effects. Поле потенциально немаленькое, ибо QVector.

Теперь первый вопрос:
Свойство effects будет дублировать данные поля _effects? Или же за счёт методов доступа к свойству, оно является лишь псевдонимом полю _effects, и реально данные будут храниться именно в нём.

Второй вопрос:
Я хочу получить значение свойства effects за счёт соответствующего метода доступа в QtScript. Причём, крайне желательно получить его по ссылке или указателю, т.к. effects массив, потенциально немаленький. Как это лучше всего реализовать?

Ну и наконец третий, последний вопрос:
В глобальных объектах скриптового движка у меня создан массив, я хочу его оттуда вытащить и использовать в дальнейшем в нескриптовой части программы, сохранив, допустим, в виде QVector. Как это можно сделать?

Если вы знаете, что на какой-нибудь из поставленных мною вопросов дан внятный ответ в определённом месте документации, я буду сказочно признателен, если что вы укажете мне, где и что мне стоит прочитать.


Название: Re: Несколько вопросов о QtScript
Отправлено: Figaro от Январь 14, 2014, 05:18
По-первому вопросу:
от реализации getEffects и setEffects зависит, где это все будет хранится и что будет возвращаться...


Название: Re: Несколько вопросов о QtScript
Отправлено: fisenkdima от Январь 17, 2014, 04:17
По-первому вопросу:
от реализации getEffects и setEffects зависит, где это все будет хранится и что будет возвращаться...

А можно чуточку по-подробнее?


Название: Re: Несколько вопросов о QtScript
Отправлено: Figaro от Январь 17, 2014, 05:43
Их код вашей реализации в студию, тогда.


Название: Re: Несколько вопросов о QtScript
Отправлено: Sasha от Январь 21, 2014, 12:06
Для себя я тоже не выяснил, что лучше использовать и в плане экономии памяти и в плане скорости и в плане удобства и простоты написания. Поэтому могу только дать пару ссылок:

Making Applications Scriptable (на русском: http://doc.crossplatform.ru/qt/4.6.x/scripting.html) - основное описание Qt-скриптов
Custom Script Class Example - здесь пример с массивом
QScriptEngine::newArray, с дальнейшим его наполнением ф-ей setProperty ( quint32 arrayIndex, const QScriptValue & value, const PropertyFlags & flags = KeepExistingFlags )


Название: Re: Несколько вопросов о QtScript
Отправлено: Figaro от Январь 21, 2014, 12:44
Чет Вас несет не в ту сторону... прежде чем со скриптами разбираться надо разобраться с собой Qt