Я провел несколько дней, исследуя и пытаясь понять это, это должно работать, но не работает.
Я пытаюсь создать и использовать простой объект 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: Unable to assign [undefined] to 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
Невозможно определить типы объектов через документы QML. ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1736401770
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: Unable to assign [undefined] to 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}
)
Подробнее здесь: [url]https://stackoverflow.com/questions/79339218/cannot-define-object-types-through-qml-documents[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия