7

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();
}

私の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.cppqml.qrc、および ****qtquickcontrols2.conf** は同じままです ( 「qrc:/main.qml」から「変更する必要があったmain.cppのmain.qmlへのパスを除いて)。 ../main.qml" as **qrc: CMake では動作しません - 理由はわかりません)。

CMake プロジェクトをコンパイルして実行すると、アプリケーションが実行されますが、色が悪く、アプリケーションはqtquickcontrols2.confで定義されているダーク/オレンジ色ではなく、デフォルトのダーク/ピンク色でレンダリングされます。ただし、私の.proプロジェクトはコンパイルしてスムーズに実行されます。

インターネットで何時間も探しましたが、答えが見つかりませんでした。また、 QQmlApplicationEngineではなくQQuickViewを使用して qml ファイルをロードできることにも気付きました (違いはわかりませんが、代替コードをテストしました)。

私の CMake プロジェクトで何が起こっているのですか?

さらに (これは二次的な質問です): CMake プロジェクトを使用しているときに「qrc:/main.qml」を記述できない理由がわかりませんか? .proプロジェクトでは "qrc:/main.qml" を使用でき、qmlファイルはプロジェクト ツリーの.qrcファイルの下にきちんとリストされていますが、CMake プロジェクトを使用する場合はそうではありません。

4

1 に答える 1