Я следую разделу «Определение типов QML из C++ — регистрация типа объекта, который можно создавать, чтобы создать базовый пользовательский элемент QML C++ и затем использовать его в Main.qml». Однако я получаю предупреждения о том, что импорт не выполнен, особенно эти 4:
D:\Downloads\CppIntegrationTest\Main.qml:2: предупреждение : При импорте модуля «CppIntegrationTest» возникали предупреждения: [import]
D:\Downloads\CppIntegrationTest\Main.qml: 1: предупреждение: не удалось импортировать CppIntegrationTest. Правильно ли настроены пути импорта? [импорт]
D:\Downloads\CppIntegrationTest\Main.qml:10: предупреждение: Foo не найден. Вы добавили весь импорт и зависимости? Вы имели в виду «Поток»? [импорт]
D:\Downloads\CppIntegrationTest\Main.qml:10: предупреждение: используется тип Foo, но он не разрешено [unresolved-type]
Эти предупреждения не нарушают работу сборки, но значительно усложняют ее разработку. Как мне устранить эти предупреждения?
Версия Qt Creator — 14.0.2. На основе Qt 6.7.3. Я использую Windows 10.
Структура файла:
CppIntegrationTest
|-- CMakeLists.txt
|-- foo.cpp
|-- foo.h
|-- main.cpp
|-- Main.qml
CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
project(CppIntegrationTest VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)
qt_add_executable(appCppIntegrationTest
main.cpp
)
qt_add_qml_module(appCppIntegrationTest
URI CppIntegrationTest
VERSION 1.0
QML_FILES
Main.qml
SOURCES foo.h foo.cpp
)
# 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(appCppIntegrationTest PROPERTIES
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appCppIntegrationTest
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(appCppIntegrationTest
PRIVATE Qt6::Quick
)
include(GNUInstallDirs)
install(TARGETS appCppIntegrationTest
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
foo.h:
#ifndef FOO_H
#define FOO_H
#include
#include
class Foo : public QObject
{
Q_OBJECT
QML_ELEMENT
public:
explicit Foo(QObject *parent = nullptr);
signals:
};
#endif // FOO_H
foo.cpp:
#include "foo.h"
Foo::Foo(QObject *parent)
: QObject{parent}
{}
main.cpp:
#include
#include
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("CppIntegrationTest", "Main");
return app.exec();
}
Main.qml:
import QtQuick
import CppIntegrationTest
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Foo {
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... with-cmake
Ложные предупреждения Qt Creator при импорте элемента C++ в QML с помощью CMake ⇐ C++
Программы на C++. Форум разработчиков
1729190532
Anonymous
Я следую разделу «Определение типов QML из C++ — регистрация типа объекта, который можно создавать, чтобы создать базовый пользовательский элемент QML C++ и затем использовать его в Main.qml». Однако я получаю предупреждения о том, что импорт не выполнен, особенно эти 4:
D:\Downloads\CppIntegrationTest\Main.qml:2: предупреждение : При импорте модуля «CppIntegrationTest» возникали предупреждения: [import]
D:\Downloads\CppIntegrationTest\Main.qml: 1: предупреждение: не удалось импортировать CppIntegrationTest. Правильно ли настроены пути импорта? [импорт]
D:\Downloads\CppIntegrationTest\Main.qml:10: предупреждение: Foo не найден. Вы добавили весь импорт и зависимости? Вы имели в виду «Поток»? [импорт]
D:\Downloads\CppIntegrationTest\Main.qml:10: предупреждение: используется тип Foo, но он не разрешено [unresolved-type]
Эти предупреждения не нарушают работу сборки, но значительно усложняют ее разработку. Как мне устранить эти предупреждения?
Версия Qt Creator — 14.0.2. На основе Qt 6.7.3. Я использую Windows 10.
Структура файла:
CppIntegrationTest
|-- CMakeLists.txt
|-- foo.cpp
|-- foo.h
|-- main.cpp
|-- Main.qml
CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
project(CppIntegrationTest VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)
qt_add_executable(appCppIntegrationTest
main.cpp
)
qt_add_qml_module(appCppIntegrationTest
URI CppIntegrationTest
VERSION 1.0
QML_FILES
Main.qml
SOURCES foo.h foo.cpp
)
# 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(appCppIntegrationTest PROPERTIES
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appCppIntegrationTest
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(appCppIntegrationTest
PRIVATE Qt6::Quick
)
include(GNUInstallDirs)
install(TARGETS appCppIntegrationTest
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
foo.h:
#ifndef FOO_H
#define FOO_H
#include
#include
class Foo : public QObject
{
Q_OBJECT
QML_ELEMENT
public:
explicit Foo(QObject *parent = nullptr);
signals:
};
#endif // FOO_H
foo.cpp:
#include "foo.h"
Foo::Foo(QObject *parent)
: QObject{parent}
{}
main.cpp:
#include
#include
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("CppIntegrationTest", "Main");
return app.exec();
}
Main.qml:
import QtQuick
import CppIntegrationTest
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Foo {
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79079161/false-qt-creator-warnings-when-importing-a-c-element-into-qml-with-cmake[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия