Форум программистов, компьютерный форум, киберфорум
QML
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 7
1

Qml: singleton не работает в режиме отладке

16.06.2017, 16:44. Показов 2227. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Создаю новый проект "Qt Quick Application"
добавляю в него директорию params
в директорию помещаю два файла:
Params.qml
qmldir

Прописываю их в qrc:

XML
1
2
3
4
5
6
7
<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>params/Params.qml</file>
        <file>params/qmldir</file>
    </qresource>
</RCC>
в Params.qml создаю минимальный синглетон:

Javascript
1
2
3
4
5
6
pragma Singleton
import QtQuick 2.0
 
Item {
    property int field: 10;
}
В файле qmldir прописываю его для использования:

singleton params 1.0 Params.qml

В main.qml делаю импорт директории и использую свой синглетон:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
import QtQuick 2.3
import QtQuick.Window 2.2
 
import "params"
 
Window {
    visible: true
 
    Text {
        text: qsTr("Hello World-" + params.field)
        anchors.centerIn: parent
    }
}
Короче, всё согласно хелпа.

Запускаю на исполнение: работает! Вижу правильную надпись: "Hello World-10"
Запускаю на отладку: увы и ах!
Выдаёт ошибку:
qrc:/main.qml:10: ReferenceError: params is not defined

Это можно победить?
А то получается использование синглетона лишает проект возможности отладки.

PS: пробовал альтернативный способ регистрации, используя в main.cpp метод
qmlRegisterSingletonType (QUrl("qrc:/params/Params.qml"), "params", 1, 0, "params");
но получаю ту же ошибку о неопределённости params
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2017, 16:44
Ответы с готовыми решениями:

Использование C++ singleton в Qml
Добрый день! Пытаюсь вытащить из C++ singleton класса данные - не очень понятно как получить...

QML extention plugin как singleton
Добрый день. Попытка на следующей стадии: Plugin создан и может быть успешно загружен в...

БД Аксесс 2003 не работает в режиме записи (работает только в режиме просмотра)
Форумчане, доброго времени суток. Столкнулся со следующим: В субботу убрал из таблиц лишние...

Collections: singleton/singletonList/singletonMap. Что значит слово singleton?
Заметил, что в классе Collections (утилитный класс) имеются методы для оборачивания элемента в...

2
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
17.06.2017, 12:47 2
Лучший ответ Сообщение было отмечено Wyn как решение

Решение

Цитата Сообщение от fibray Посмотреть сообщение
Короче, всё согласно хелпа.
В хелпе не так.
Там пример такой:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Style.qml with custom singleton type definition
pragma Singleton
import QtQuick 2.0
 
QtObject {
    property int textSize: 20
    property color textColor: "green"
}
 
// qmldir declaring the singleton type
module CustomStyles
singleton Style 1.0 Style.qml
 
// singleton type in use
import QtQuick 2.0
import CustomStyles 1.0
 
Text {
    font.pixelSize: Style.textSize
    color: Style.textColor
    text: "Hello World"
}
Как говорится - найдите 10 отличий.

Добавлено через 3 минуты
Если делаете через qmlRegisterSingletonType, то версию модуля тоже необходимо указывать.

Добавлено через 1 минуту
И да, делать модуль с точно таким же именем, что и имя папки - не самая разумная идея.
1
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 7
27.06.2017, 14:18  [ТС] 3
Спасибо.

Запись "module CustomStyles" в файле qmldir не работает - не находит модуль при подключении, если делать так, как в вашем примере. В моей версии хелпа делают импорт по имени директории.

А вот замечание про неразумность совпадения имени папки и синглетона - в точку. Переименовал синглетон, заработало и в отладке.
0
27.06.2017, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2017, 14:18
Помогаю со студенческими работами здесь

Программа работает в отладке, но не работает в скомпилированном виде
Доброго времени суток. Появилась не предвиденная проблема :( Не получается разобраться,...

Подсветка QML элементов QML-ного плагина в QtCreator в случае нахождения QML файлов плагина в ресурсах!
Здравствуйте! Если сделать плагин для QML и подключить его в основном проекте ну как - то так:...

Почему не работает виртуальный компорт в режиме отладки, а в нормальном режиме работет
Процессор stm32f205. Подключаю плату (собственной разработки) к компу, определяется виртуальный...

ХР нормально работает в режиме Safe Mode. Почему она виснет в обычым режиме?
ХР нормально работает в режиме Safe Mode. Зачем он виснет в обычым режиме?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru