Russian Qt Forum

Qt => Qt Quick => Тема начата: PavelIgorevich от Февраль 14, 2015, 15:56



Название: База палитр для создания тем в программе
Отправлено: PavelIgorevich от Февраль 14, 2015, 15:56
Добрый день, товарищи!

Совсем что-то мозг отказывается "варить" над, казалось бы, простым вопросом... В QML новичок, прошу помощи.

Итак, представим, что у нас есть программа, которая может быть стилизована только одной из двух групп цветов - например, черным и двумя его оттенками, и красным + 2 его оттенка.

Хочу создать документ, в котором эти данные о цветах будут храниться, и его удобно было бы подсасывать для использования в оформлении различных элемнтов.

Родил такую штуку:
Код:
//PaletteColor.qml - документ, который определяет объект типа Цвет, в properties которого содержатся оттенки
import QtQuick 2.4

QtObject{
       id: colorShades;
       property color main;
       property color light;
       property color superlight;
}

//FiftyShadesOfGrey.qml - это уже готовый цвет для темы
import QtQuick 2.4

PaletteColor{
      main:"grey";
      light:"#222222";
      superlight:"#111111";
}

//test.qml

import QtQuick 2.4
Rectangle{
       id:rect;
       widht:100;height:100;
       color: FiftyShadesOfGrey.light;
}

Сие чудо не работает. Когда в свойство color ставлю просто "red", то появляется красный квадрат, как и рассчитано.

Подскажите, пожалуйста, в чем может быть ошибка? И, вообще, правильную ли я политику в архитектуре избрал - цветовых схем будет много, а создавать под каждую отдельный файл не очень, как мне кажется, правильное решение. Может быть, есть какие-то более интересные способы реализации?

Всем заранее спасибо!


Название: Re: База палитр для создания тем в программе
Отправлено: navrocky от Февраль 24, 2015, 16:41
Я бы использовал глобальный JS файл с палитрами. Или сделал бы синглтон со свойствами-палитрами. Но синглтоны на данный момент в QML довольно плохо документированы и там много "если".

PS. Также оттенки основного цвета можно получать алгоритмически, используя Qt.lighter/darker и др. Не уверен, подойдёт ли это в вашем случае..


Название: Re: База палитр для создания тем в программе
Отправлено: PavelIgorevich от Март 03, 2015, 17:46
Я бы использовал глобальный JS файл с палитрами. Или сделал бы синглтон со свойствами-палитрами. Но синглтоны на данный момент в QML довольно плохо документированы и там много "если".

PS. Также оттенки основного цвета можно получать алгоритмически, используя Qt.lighter/darker и др. Не уверен, подойдёт ли это в вашем случае..

Благодарю за ответ! Да, я решил пользоваться простым JS-файлом с описанием нужных цветов и их оттенков. Получилось достаточно удобно.