我愿意在 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** 保持不变(除了main.cpp中main.qml的路径,我必须从"qrc:/main.qml"更改为" ../main.qml" as **qrc:不适用于 CMake - 不知道为什么)。
现在,当我编译并执行 CMake 项目时,我执行了应用程序,但颜色不好,应用程序使用默认的暗/粉红色而不是qtquickcontrols2.conf中定义的暗/橙色呈现。不过,我的.pro项目可以顺利编译并运行。
我已经在互联网上寻找了几个小时,但找不到任何答案。我也意识到我可以使用QQuickView而不是QQmlApplicationEngine来加载我的 qml 文件(不知道有什么区别,但我已经测试了替代代码),尽管它没有帮助。
你对我的 CMake 项目有什么看法吗?
另外(这是一个次要问题):你知道为什么我在使用 CMake 项目时不能写“qrc:/main.qml”吗?在.pro项目中,我可以使用“qrc:/main.qml”,并且我的 qml 文件整齐地列在项目树中的.qrc文件下方,而使用 CMake 项目时并非如此。