QQuick与CMake:样式不起作用

are*_*uit 6 cmake qtquickcontrols2

我愿意在Qt Quick Controls 2和C ++中的CMake项目中使用样式。而且我很难使颜色正确。

C ++,qml和样式代码来自qt博客,并且只要我使用.pro项目文件,它就可以正常工作,但是当我转向CMakeLists.txt时,我无法正确设置颜色(我相信它们是默认的颜色深色/紫色,而不是深色/橙色)。

.pro项目中,我的main.cpp如下所示:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    QQuickStyle::setStyle("Material");

    QQmlApplicationEngine engine;
    engine.load(QUrl(QLatin1String("qrc:/main.qml")));

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我的qml.qrc文件看起来像这样:

<!DOCTYPE RCC>
<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>CustomLabel.qml</file>
        <file>PageBackground.qml</file>
        <file>SideBar.qml</file>
        <file>SideBarForm.ui.qml</file>
        <file>Light.qml</file>
        <file>LightForm.ui.qml</file>
        <file>Heating.qml</file>
        <file>HeatingForm.ui.qml</file>
        <file>Security.qml</file>
        <file>SecurityForm.ui.qml</file>
        <file>qtquickcontrols2.conf</file>
    </qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)

和我的qtquickcontrols2.conf文件是这样的:

[Controls]
Style=Material

[Universal]
Theme=Dark
Accent=DeepOrange

[Material]
Theme=Dark
Accent=DeepOrange
Run Code Online (Sandbox Code Playgroud)

现在,我的CMake项目文件夹包含完全相同的文件(实际上是.pro项目文件夹的副本和粘贴),除了我删除了.pri.pro文件,现在它包含一个CMakeLists.txt,如下所示:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
cmake_policy(SET CMP0015 NEW)

# Projet. 
project(MyQtQuick)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

# Find dependencies.
set(QT_DIR ../DevRoot/Dependencies/Qt/v5.7.0/5.7/gcc_64)

# Prepare project for Qt. 
set(CMAKE_INCLUDE_CURRENT_DIR ON) # Find includes in corresponding build directories.
set(CMAKE_AUTOMOC ON) # Instruct CMake to run moc automatically when needed.
set(CMAKE_PREFIX_PATH ${QT_DIR})

find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Gui)
find_package(Qt5OpenGL)
find_package(Qt5Quick REQUIRED)
find_package(Qt5Qml REQUIRED)
find_package(Qt5QuickControls2 REQUIRED)

# List sources.
set(${PROJECT_NAME}_sources
    main.cpp
)

qt5_add_resources(RCC_SOURCES qml.qrc)

# Headers.
include_directories(
    .
    )

# Output library.
add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_sources})

# Linker.
qt5_use_modules(${PROJECT_NAME} Core Gui OpenGL QuickControls2)
Run Code Online (Sandbox Code Playgroud)

文件main.cpp中qml.qrc和**** qtquickcontrols2.conf **保持不变(除了路径main.qmlmain.cpp中,我不得不改变从“QRC:/main.qml”“ ../main.qml”作为** qrc:不适用于CMake-不知道为什么)。

现在,当我编译并执行CMake项目时,我得到了执行的应用程序,但是颜色不好,该应用程序将使用默认的深/粉红色呈现,而不是qtquickcontrols2.conf中定义的深/橙色。我的.pro项目可以编译并顺利运行。

我在互联网上找了好几个小时,找不到任何答案。我也意识到我可以使用QQuickView而不是QQmlApplicationEngine来加载我的qml文件(不知道有什么区别,但是我已经测试了替代代码),尽管它没有帮助。

您对我的CMake项目有什么看法吗?

另外(这是一个次要问题):您是否知道为什么在使用CMake项目时无法编写“ qrc:/main.qml”?在.pro项目中,我可以使用“ qrc:/main.qml”,并且我的qml文件会在项目树中的.qrc文件下整齐地列出,而使用CMake项目时则不是这种情况。

Dec*_*zie 7

首先将其添加到您的 cmake 文件中

find_package(Qt5 COMPONENTS Core Quick QuickControls2 REQUIRED)
Run Code Online (Sandbox Code Playgroud)

比添加这个

target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Quick Qt5::QuickControls2)
Run Code Online (Sandbox Code Playgroud)

在你的 CmakeLists.txt