QQuick с CMake: стиль не работает

cmake qtquickcontrols2

2652 просмотра

1 ответ

407 Репутация автора

Я готов использовать стилизацию в Qt Quick Controls 2 и вместе с проектом CMake на C ++. И мне трудно найти правильные цвета.

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 файл lookes , как это:

<!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, который мне пришлось изменить с "qrc: /main.qml" на " ../main.qml "as ** qrc: не работает с CMake - понятия не имею, почему).

Теперь, когда я компилирую и выполняю проект CMake, я запускаю приложение, но цвета плохие, приложение отображается с использованием темных / розовых цветов по умолчанию, а не темных / оранжевых цветов, определенных в qtquickcontrols2.conf . Мой проект .pro компилируется и работает без проблем.

Я часами искал в интернете и не мог найти ответа. Я также понял, что мог бы использовать QQuickView вместо QQmlApplicationEngine для загрузки моего qml-файла (не знаю, в чем разница, но я тестировал альтернативный код), хотя это не помогло.

Есть ли у вас что-то, что происходит с моим проектом CMake?

Дополнительно (и это второстепенный вопрос): у вас есть идея, почему я не могу написать "qrc: /main.qml" при использовании проекта CMake? В проекте .pro я могу использовать «qrc: /main.qml», и мои qml-файлы аккуратно перечислены под файлом .qrc в дереве проекта, что не так при использовании проекта CMake.

Автор: arennuit Источник Размещён: 18.07.2016 09:40

Ответы (1)


3 плюса

630 Репутация автора

Сначала просто добавьте это в ваш файл cmake

find_package(Qt5 COMPONENTS Core Quick QuickControls2 REQUIRED)

чем добавить это

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

в вашем CmakeLists.txt

Автор: Declan Nnadozie Размещён: 16.08.2018 02:17
Вопросы из категории :
32x32