Объявите определенные глобальные объекты в QML - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь следовать этому ответу, но для более сложных объектов:

https://stackoverflow.com/a/25123824/1036082

Мои файлы:

qml.qrc:

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>Uconsts.qml</file>
        <file>Ucolors.qml</file>
        <file>qmldir</file>
    </qresource>
</RCC>

main.qml:

import QtQuick 2.9
import QtQuick.Window 2.2
import "."

Window
{
    width: 600
    height: 400
    visible: true
    color: Uconsts.colDay.canvas;

}

qmldir:

# qmldir
singleton Uconsts Uconsts.qml

Ucolors.qml:

import QtQuick 2.0

Item
{
    property color canvas: "#FFFFFF";
}

Uconsts.qml:

pragma Singleton
import QtQuick 2.9

QtObject
{
    property Ucolors colDay:
    {
        canvas: "#eaedf1";
    }
}

При запуске программы во время выполнения я получаю следующие ошибки со стороны QML:

qrc:/main.qml:10: TypeError: Cannot read property 'canvas' of null
qrc:/Uconsts.qml:6:2: Unable to assign QString to Ucolors_QMLTYPE_0*

Что я здесь не так делаю?

1 Ответ

1 голос
/ 10 мая 2019

QML не вычитает тип при использовании {}, вы должны явно создать элемент

pragma Singleton
import QtQuick 2.9

QtObject
{
    property Ucolors colDay: Ucolors{ canvas: "#eaedf1";}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...