QQuick与CMake:风格不起作用

时间:2016-07-18 09:40:06

标签: cmake qtquickcontrols2

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

C ++,qml和样式代码来自the qt blog并且只要我使用 .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();
}

我的 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>

我的 qtquickcontrols2.conf 文件如下:

[Controls]
Style=Material

[Universal]
Theme=Dark
Accent=DeepOrange

[Material]
Theme=Dark
Accent=DeepOrange

现在我的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)

文件 main.cpp qml.qrc 和**** qtquickcontrols2.conf **保持不变( main.qml的路径除外) main.cpp ,我必须从&#34; qrc:/main.qml" 更改为&#34;。 ./main.qml"因为** qrc:不适用于CMake - 不知道为什么。)

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

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

你对我的CMake项目有什么了解吗?

另外(这是次要问题):你知道为什么我在使用CMake项目时不能写&#34; qrc:/main.qml" ?在 .pro 项目中,我可以使用&#34; qrc:/main.qml" ,我的qml文件整齐地列在 .qrc < / strong>项目树中的文件,使用CMake项目时不是这种情况。

1 个答案:

答案 0 :(得分:2)

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

find_package(Qt5 COMPONENTS Core Quick QuickControls2 REQUIRED)

比添加此内容

target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Quick Qt5::QuickControls2)

在您的CmakeLists.txt中