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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько вопросов о QtScript  (Прочитано 3301 раз)
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. Как это можно сделать?

Если вы знаете, что на какой-нибудь из поставленных мною вопросов дан внятный ответ в определённом месте документации, я буду сказочно признателен, если что вы укажете мне, где и что мне стоит прочитать.
Записан
Figaro
Гость
« Ответ #1 : Январь 14, 2014, 05:18 »

По-первому вопросу:
от реализации getEffects и setEffects зависит, где это все будет хранится и что будет возвращаться...
Записан
fisenkdima
Гость
« Ответ #2 : Январь 17, 2014, 04:17 »

По-первому вопросу:
от реализации getEffects и setEffects зависит, где это все будет хранится и что будет возвращаться...

А можно чуточку по-подробнее?
Записан
Figaro
Гость
« Ответ #3 : Январь 17, 2014, 05:43 »

Их код вашей реализации в студию, тогда.
Записан
Sasha
Гость
« Ответ #4 : Январь 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 )
Записан
Figaro
Гость
« Ответ #5 : Январь 21, 2014, 12:44 »

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


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