首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake,Qt6 -模块"QtQuick.Controls“未安装

CMake,Qt6 -模块"QtQuick.Controls“未安装
EN

Stack Overflow用户
提问于 2021-11-01 02:11:26
回答 2查看 1.3K关注 0票数 0

我目前正在学习QtQuick,我遇到了各种各样的问题,但这是我迄今为止第一个无法解决的问题。作为背景,我使用MVSC、VisualStudio2019、CMake和Qt6。

在运行我非常基本的程序时,我将在我创建的QtQuick文件中QtQuick控件的导入语句上获得错误main.qml。我使用的CMakeLists.txt文件的相关部分是:

代码语言:javascript
运行
复制
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt6 COMPONENTS Quick REQUIRED)
find_package(Qt6 COMPONENTS QuickControls2 REQUIRED)
find_package(Qt6 COMPONENTS Core REQUIRED)
find_package(Qt6 COMPONENTS Gui REQUIRED)

qt_add_executable(nameHere
    "src/main.cpp"
    "gui/main.qml"
)

target_link_libraries(nameHere PRIVATE Qt6::Quick Qt6::QuickControls2)

qt_import_plugins(nameHere QWindowsIntegrationPlugin )

注意:在搜索解决方案时,我有一些额外的查找包--删除或添加Gui或Core不会更改错误

在检查build文件夹时,这些dll就在那里:

  • Qt6Gui
  • Qt6Core
  • Qt6Network
  • Qt6OpenGL
  • Qt6Qml
  • Qt6QmlModels
  • Qt6Quick

main.cpp看起来如下所示:

代码语言:javascript
运行
复制
#include <QtQuick>
#include <QtQuickControls2>

int main(int argc, char* argv[])
{
    QGuiApplication app(argc, argv);

    QQuickView* view = new QQuickView;
    view->setSource(QUrl::fromLocalFile("../../gui/main.qml"));
    view->show();
    return app.exec();
}

main.qml文件的内容包括

代码语言:javascript
运行
复制
import QtQuick 
import QtQuick.Controls

ApplicationWindow {
    id: window
    width: 400
    height: 500
    visible: true

}

同样,完整的错误是:

代码语言:javascript
运行
复制
/gui/main.qml:2:1: module "QtQuick.Controls" is not installed
     import QtQuick.Controls
     ^
/gui/main.qml: module "QtQml.WorkerScript" is not installed
/gui/main.qml:2:1: module "QtQuick.Controls" is not installed
     import QtQuick.Controls
     ^
/gui/main.qml: module "QtQml.WorkerScript" is not installed

任何帮助都将不胜感激!

对vcpkg文件的进一步深入研究表明,实际上没有将Qt6QuickControls2.dll放在构建文件夹中。我不喜欢将文件复制并粘贴到构建文件夹中。我不知道为什么所有其他Qt都是由CMake放置到该文件夹中的,而不是这个特定的dll。我的CMake文件中是否遗漏了一些东西,或者这可能是CMake如何设置Qt的一个bug?

同样,仅仅继续将QuickControls2 dll文件复制到文件夹中并不能真正解决问题,所以我认为这里还存在其他问题。

那么,在Qt6中,QucikControls2包含在QtQuick中,所以我不确定它是否真的需要额外的dll?不知道这里发生了什么,但我甚至运行了windeployqt,它说我已经获得了所有所需的运行时依赖项。现在我不知道这个问题是从何而来的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-04 18:27:28

Qml文件不应该在qt_add_executable中链接。在Qt6中,使用

代码语言:javascript
运行
复制
qt_add_qml_module(nameHere
    URI gui
    VERSION 1.0
    QML_FILES gui/main.qml)

参见这里的文档:https://doc-snapshots.qt.io/qt6-dev/qt-add-qml-module.html

票数 1
EN

Stack Overflow用户

发布于 2022-05-29 17:24:51

对我来说,自从我从import QtQuick.Components 1.0中删除'1.0‘并像import QtQuick.Components一样离开它之后,它就起了作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69792027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档