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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: .pragma library vs. QObject+Q_PROPERTY  (Прочитано 2774 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Декабрь 25, 2014, 16:23 »

Оф. документация советует не использовать .pragma library для хранения application-wide данных (например, констант). Вместо этого советуют использовать синглетон QObject - очевидно, как C++ класс с множеством полей Q_PROPERTY, в которых будут хранится наши константы:

http://doc.qt.io/qt-5/qtquick-performance.html

Цитировать
Use singleton types instead of pragma library scripts

If you are using a pragma library script to store application-wide instance data, consider using a QObject singleton type instead. This should result in better performance, and will result in less JavaScript heap memory being used.

Например, был файл constants.js:
Код
Javascript
.pragma library
var X = 10;
и многими другими константами. Мы переделываем в C++

Код
C++ (Qt)
class Constants : public QObject
{
...
Q_PROPERTY(X READ X CONSTANT)
...
};

В тоже время когда-то читал, что не стоит злоупотреблять вызовами из JS к С++ коду, т.к. они не быстрые. У меня обращений к константам много, сотни. Не понимаю, почему рекомендуют использовать QObject? Разве это будет быстрее, чем .pragma library?
« Последнее редактирование: Декабрь 25, 2014, 16:31 от Alex Custov » Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Декабрь 29, 2014, 21:06 »

Есть еще новый способ задавать синглтоны с помощью pragma Singleton, оно слабо задокументировано, но работает. На мой взгляд удобнее чем .pragma library, т.к. свойства можно типизировать и грузить глобальные  компоненты средствами QML.

http://qt-project.org/groups/qt-contributors-summit-2013/wiki/Evolution-of-the-QML-language

В этой статье, правда, допущена ошибка. Надо обязательно писать "pragma Singleton" с большой буквы иначе ничего работать не будет.



Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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