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.cpp、qml.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 プロジェクトを使用する場合はそうではありません。