Russian Qt Forum
Март 29, 2024, 01:25
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Quick
(Модератор:
navrocky
) >
#ifdef в QML
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: #ifdef в QML (Прочитано 6338 раз)
oreons
Гость
#ifdef в QML
«
:
Июль 25, 2016, 11:15 »
Есть проект с запуском в QT4 (для WinCE) и QT5 (для Android).
В С++ все решается #ifdef, а в QML файлах не нашел таких операторов.
Например, в заголовке QML файла в QT4 нужна строка "import QtQuick 1.1", а в QT5 "import QtQuick 2.1"
Также могут быть отличия внутри файлов, используются разные компоненты.
Есть ли похожие на #ifdef конструкции в QML?
Записан
Отражение луны
Гость
Re: #ifdef в QML
«
Ответ #1 :
Июль 26, 2016, 00:56 »
В qml все наоборот, удобнее/современнее.
Ты просто указываешь версию и используешь языковые конструкции, соответствующие этой версии, и никак не наоборот. Каждый qml файл при этом может использовать свои собственные версии импортов. То есть ты не обязан импортировать одну версию QtQuick 2.1 во всех файлах.
Таким боком никакой ifdef попросту не нужен, ты всегда заранее знаешь что используешь.
Но 1 и 2 qtquick попросту не совместимы. Так что не совсем понимаю что должно получится в итоге)
«
Последнее редактирование: Июль 26, 2016, 00:58 от Komorebi
»
Записан
oreons
Гость
Re: #ifdef в QML
«
Ответ #2 :
Июль 26, 2016, 10:57 »
Цитировать
Но 1 и 2 qtquick попросту не совместимы. Так что не совсем понимаю что должно получится в итоге)
Большинство из 1 совместимо с 2. А что несовместимо, как раз и хотелось бы отделить #ifdef.
Проект изначально на 1, переносится на Андроид. Там внутри много логики на js.
Изменения в основном с заголовками и немного внутри файлов. Делать 2 версии файлов qml нет смысла.
Пока придумал только генерировать новые файлы из исходных с подстановкой нужных значений перед загрузкой qml.
Записан
Отражение луны
Гость
Re: #ifdef в QML
«
Ответ #3 :
Июль 28, 2016, 23:18 »
Нету никакого ифдефа. Лучшее, что можно в этой ситуации сделать - пробросить в энвайромент переменную и использовать Qt.createQmlObject, который позволяет создать объект из строки. В нем можно собственно описать компоненты, которые потом создавать через Component.createObject (честно говоря, не проверял, и не уверен, что это сработает). Короче максимум костылей, нужно копать в сторону c++.
«
Последнее редактирование: Июль 28, 2016, 23:23 от Komorebi
»
Записан
BuRn
Гость
Re: #ifdef в QML
«
Ответ #4 :
Август 01, 2016, 20:29 »
Цитата: oreons от Июль 25, 2016, 11:15
Есть проект с запуском в QT4 (для WinCE) и QT5 (для Android).
В С++ все решается #ifdef, а в QML файлах не нашел таких операторов.
Например, в заголовке QML файла в QT4 нужна строка "import QtQuick 1.1", а в QT5 "import QtQuick 2.1"
Также могут быть отличия внутри файлов, используются разные компоненты.
Есть ли похожие на #ifdef конструкции в QML?
Сделай себе что-то типа брендирования. Те компоненты которые отличаются грузи лоадером, а в лоадере определяй что тебе грузить относительно ифдефа который ты сделаешь плюсовой функцией
Записан
oreons
Гость
Re: #ifdef в QML
«
Ответ #5 :
Август 04, 2016, 17:48 »
Спасибо за ответы. Сделал простой вариант, беру qml файлы и прогоняю по ключевым словам и подменяю на нужные. Немного замедляет запуск, но не критично.
Код:
import QtQuick #<qtquick_ver>#
#<comment1># import QtQuick.Window 2.2
#<comment1># import QtMultimedia 5.4
qtquick_ver заменяю на нужный номер версии
comment1 в quick 1 заменяю на //
«
Последнее редактирование: Август 04, 2016, 17:50 от oreons
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...