【发布时间】:2023-03-11 22:50:02
【问题描述】:
我有一个非常简单的正确 Qt QML 项目,使用 Qt 5.9.1 和运行良好的 qmake 编写和构建。但是我想使用 CLion 来编辑 c++ 代码,所以我创建了 CMake 项目配置,如互联网上许多教程中所述。构建进展顺利,但是当应用程序启动时,它会产生非常奇怪的 QQmlApplicationEngine 错误,就像我的 qml 写得完全错误:
QQmlApplicationEngine failed to load component
main.qml:1 Expected token `numeric literal'
main.qml:1 Expected a qualified name id
这是我在 MacOS X 下的配置:(注意:我确实不故意使用 QRC!)
CMakeLists.txt:
cmake_minimum_required(VERSION 3.8)
project(simple_project)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5 5.9.1 REQUIRED Core Widgets Gui Qml Quick)
set(SOURCE_FILES
main.cpp
main.qml)
add_executable(simple_project ${SOURCE_FILES})
target_link_libraries(simple_project
Qt5::Core
Qt5::Widgets
Qt5::Gui
Qt5::Qml
Qt5::Quick)
main.cpp:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[]) {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load("main.qml");
return app.exec();
}
main.qml 位于可执行文件所在的同一目录中:
import QtQuick.Controls 2.1
import QtQuick 2.7
import QtQuick.Layouts 1.2
ApplicationWindow {
visible: true
width: 480
height: 320
}
【问题讨论】:
-
您是否已将 .qml 添加到 .qrc 中?
-
@eyllanesc 我不使用 qrc,我只是在同一目录中加载本地 *.qml 文件。如您所见,qml引擎很好地找到了文件,但它无法以某种方式解析它。
-
应该 main.qml 与您的可执行文件在同一个文件夹中吗?
-
不,这只是一个简单项目的示例,具有尽可能少的依赖项。
-
请提供一个mvce,这意味着您重现了您的错误,这是一致的。我刚试过它对我有用。
标签: qt cmake qml clion qqmlapplicationengine