diff options
author | Vitaly Fanaskov <[email protected]> | 2019-08-06 15:47:50 +0200 |
---|---|---|
committer | Vitaly Fanaskov <[email protected]> | 2020-03-16 14:33:24 +0100 |
commit | 1875ad7f92cad270cc5857d71096a4b46c27c562 (patch) | |
tree | f8bfa68c889ea602e14d017e26030401ae7c1dc9 /src/quick/items/qquickitem.cpp | |
parent | ea592334fdf12ce6625106c3f06bb57333690942 (diff) |
Introduce new mechanism to manage palette functionality in QML
Main goals of these changes:
1) Add an ability to work with disabled and inactive palettes from QML
2) Eliminate massive code duplication in qtquickcontrols2 module
3) Provide easily extensible architecture for this piece of
functionality
Architectural part.
Palette
It was decided to not change existing QPalette, but add thin wrappers
around it to provide all required functionality. These wrappers are
highly coupled with QPalette class because of using some enum values
from it.
There are two new classes QQuickPalette and QQuickColorGroup.
QQuickPalette class inherits QQuickColorGroup class and represents
Active/All color group. QQuickPalette also provides an access to three
color groups: Active, Inactive, and Disabled.
In order to access colors the special class QQuickPaletteColorProvider
is used. This is a wrapper around QPalette that provides some
convenience functions.
Interface
The private property "palette" should be exposed.
Implementation
All private parts of classes that implement
QQuickAbstractPaletteProvider have to inherit
QQuickPaletteProviderPrivateBase class. This template class implement
all functionality: create palette, resolve dependencies, connect objects
etc. This is important to mention that related data is lazily
allocatable on demand only. Hence, there is no memory overhead for
regular items.
Change-Id: I911424b730451b1ad47f68fd8007953b66eddb28
Reviewed-by: Volker Hilsheimer <[email protected]>
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 4b635ac7b8..93f1765811 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -8258,6 +8258,48 @@ QSGTextureProvider *QQuickItem::textureProvider() const } /*! + \since 6.0 + \qmlproperty Palette QtQuick::Item::palette + + This property holds the palette currently set for the item. + + This property describes the item's requested palette. The palette is used by the item's style + when rendering all controls, and is available as a means to ensure that custom controls can + maintain consistency with the native platform's native look and feel. It's common that + different platforms, or different styles, define different palettes for an application. + + The default palette depends on the system environment. ApplicationWindow maintains a + system/theme palette which serves as a default for all controls. There may also be special + palette defaults for certain types of controls. You can also set the default palette for + controls by either: + + \list + \li passing a custom palette to QGuiApplication::setPalette(), before loading any QML; or + \li specifying the colors in the \l {Qt Quick Controls 2 Configuration File} + {qtquickcontrols2.conf file}. + \endlist + + Items propagate explicit palette properties from parents to children. If you change a specific + property on a items's palette, that property propagates to all of the item's children, + overriding any system defaults for that property. + + \code + Item { + palette { + buttonText: "maroon" + button: "lavender" + } + + Button { + text: "Click Me" + } + } + \endcode + + \sa Window::palette, Popup::palette, QQuickAbstractPaletteProvider, ColorGroup, Palette +*/ + +/*! \property QQuickItem::layer \internal */ |