© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

Android. Java vs Qt QML - Урок 000. Включение Material Design

material design, Android

При разработке как на Java, так и на Qt QML требуется включение Material Design.

Material Design на Java

В случае с Java достаточно включить оформление темы в файле styles.xml и задать необходимую цветовую гамму для приложения.

styles.xml

<resources>

    <style name="AppTheme" parent="android:Theme.Material">
        <!-- Main theme colors -->
        <!--   your app branding color for the app bar -->
        <item name="android:colorPrimary">@color/colorPrimary</item>
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
        <!--   theme UI controls like checkboxes and text fields -->
        <item name="android:colorAccent">@color/colorAccent</item>
    </style>

</resources>

colors.xml

Цвета задаются в данном файле.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

Material Design на Qt QML

Для того, чтобы использовать Material Design на Qt QML, необходимо включить использование Qt Quick Controls 2 в профайле проекта.

QT += quick quickcontrols2

Далее подключаем класс QQuickStyle в файле main.cpp, чтобы с помощью статического метода данного класса включить стиль оформления Material Design для всего приложения.

#include <QGuiApplication>
#include <QQuickStyle> // Класс для включения стилизации
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQuickStyle::setStyle("Material"); // Включение Material Design

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

Изменение цветового оформления

Для изменения цветового оформления стиля используется конфигурационный файл qtquickcontrols2.conf, который должен быть размещён в корне проекта рядом с профайлом проекта. Можете добавить этот файл в ресурсы, чтобы проще было работать с данным файлом из IDE.

[Material]
Primary=#3F51B5
Accent=#FF4081
Theme=#303F9F
Foreground=#ffff00
Background=#00ffff

Параметры настройки цветовой схемы

В Java присутствуют следующие параметры настройки цветовой схемы

  • colorPrimary - основной цвет, например цвет Action Bar
  • colorPrimaryDark - цвет строки состояния
  • textColorPrimary - цвет текста для надписей поверх элементов с фоном colorPrimary
  • windowBackground - цвет фона приложения
  • navigationBarColor - цвет цвет навигационного меню телефона
  • colorAccent - цвет элементов, таких как чекбоксы и т.д.

В Qt QML имеется лишь пять цветовых настроек

  • Primary - основной цвет, элементы похожие на Action Bar
  • Accent - цвет элементов, таких как чекбоксы
  • Theme - цвет темы, применяется как для главного окна приложения в качестве фона, так и для всплывающих меню или иных других элементов. Может быть переопределена также свойствами Foreground и Background
  • Foreground - отдельная цветовая настройка темы, может применяться для текста, переолределяет установки Theme.
  • Background - применяется для определения фона таких элементов как меню, Navigation Drawer и т.д. переолределяет установки Theme.

Для Theme можно в качестве значения использовать System, что будет означать использование системных цветовых палитр. Но при этом можно провести корректировку цвета с помощью Foreground и Background.

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
15 августа 2018 г. 19:02
Lord Inquisitoris

C++ - Тест 003. Условия и циклы

  • Результат 57баллов,
  • Очки рейтинга-2
15 августа 2018 г. 18:58
Lord Inquisitoris

C++ - Тест 005. Структуры и Классы

  • Результат 83баллов,
  • Очки рейтинга4
15 августа 2018 г. 9:29
Леха Завистович

C++ - Тест 001. Первая программа и типы данных

  • Результат 86баллов,
  • Очки рейтинга6
Последние комментарии
10 августа 2018 г. 13:40
Alex

Работа с триггерными функциями в PostgreSQL

Приветствую! Если вы создаете новую таблицу, почему бы просто не сделать вьюху ? Просто от одного названия "триггер" как-то не хочется его использовать, а уж кода сколько писа...
10 августа 2018 г. 11:46
Евгений Легоцкой

Bash скрипт для создания и скачивания дампа базы данных и медиа файлов с удаленного сервера

Вон оно что. Не сталкивался с таким, надо будет глянуть исходники дефолтного менеджера объектов. Возможно там кеширование просто. Пробовали добавить запись через adminer, перезапусти...
10 августа 2018 г. 11:34
Alex

Bash скрипт для создания и скачивания дампа базы данных и медиа файлов с удаленного сервера

допустим у нас есть любая таблица, созданная джангой. через админку добавляем пару записей. все ок. далее, лично в моем случае , я открываю adminer, и в эту таблицу добавляю еще одну зап...
Сейчас обсуждают на форуме
15 августа 2018 г. 14:06
Олег Корнев

Как подключить QtCharts в QML?

После некоторых манипуляций (переустановил креатор) смог запустить экземплы с использованием QtCharts, но все они работают с подключениями в файлах .pro .cpp, у меня таких файлов нет. Как...
14 августа 2018 г. 7:02
Ruslan-maniak

Переключение страниц и перевод фокуса на потомка новой страницы

Большое спасибо. Подтолкнули меня на мысль вынести обработку клавиш из PathView на всю страницу. И тогда - да, ваша подсказка работает. добавил в StackView onCurrentItemChanged: currentItem.fo...
14 августа 2018 г. 6:39
Евгений Легоцкой

Как сделать аудиовизуализацию для плеера на qt?

Добрый день. Просмотрите пример в Qt Creator, который на QML, там реализовано визуализация, возможно вам понравится использовать, QML, да и кастомные интерфейсы на нём всё-таки лучше...
11 августа 2018 г. 10:12
Евгений Легоцкой

Qt C++ vs QML

Добрый день. Если Андроид предполагается, то конечно нужно использовать QML. Я занимался разработкой арканоида на QML и ещё одной игры. Пытался реализовывать логику на QML, но это ...
11 августа 2018 г. 9:24
Евгений Легоцкой

Помогите со слоями

Проверочное сообщение

Рекомендуемые страницы