Невозможно определить типы объектов через документы QMLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Невозможно определить типы объектов через документы QML

Сообщение Anonymous »

Я провел несколько дней, исследуя и пытаясь понять это, это должно сработать, но не работает. Я пытаюсь создать и использовать простой объект QML в качестве единого источника настроек для моего проекта. Для тестирования я создал новый проект Qt 6.7.3 QML. Я добавил новый файл .qml «TestQmlObj.qml» с несколькими свойствами. Intellisense работает, но при запуске я постоянно получаю ошибки «Невозможно назначить [неопределенное]».
Любая помощь будет очень признательна.
Спасибо. Джим
TestQmlObj.qml
pragma Singleton
import QtQuick

QtObject {

readonly property color primaryColor: "red"
readonly property color secondaryColor: "#FFC107"
readonly property color backgroundColor: "#FFFFFF"

readonly property font mainfont: Qt.font({
family: "Arial",
pointSize: 12,
weight: Font.Normal
})

readonly property font headerFont: Qt.font({
family: "Arial",
pointSize: 16,
weight: Font.Bold
})
}

Затем я попытался использовать эти свойства в файле Main.qml. Очень просто... верно.
Main.qml
import QtQuick

Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")

Rectangle {
anchors.fill: parent
//color: "red"
color: TestQmlObj.primaryColor
//color: TestQmlObj.backgroundColor

Text {
text: qsTr("text")
font: TestQmlObj.headerFont
}
}
}

Я попробовал все предложенные изменения, но во всех случаях получаю следующую ошибку, а цвет не меняется.

qrc:/qt/qml/QmlObjTypes/Main.qml:13:9: Невозможно назначить [неопределено] для QColor

CMakeLists.txt
cmake_minimum_required(VERSION 3.16)

project(QmlObjTypes VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Quick)

qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(appQmlObjTypes
main.cpp
)

qt_add_qml_module(appQmlObjTypes
URI QmlObjTypes
VERSION 1.0
QML_FILES
Main.qml
TestQmlObj.qml
)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appQmlObjTypes PROPERTIES
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appQmlObjTypes
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)

target_link_libraries(appQmlObjTypes
PRIVATE Qt6::Quick
)

include(GNUInstallDirs)
install(TARGETS appQmlObjTypes
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)


Подробнее здесь: https://stackoverflow.com/questions/793 ... -documents
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»