A lightweight framework on top of the Qt scene graph and only few classes from Qt/Quick. It is usable from C++ and/or QML.
Go to file
Uwe Rathmann 8d780244b6 Squashed commit of the following:
commit c331fd601a
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 10 12:17:51 2024 +0100

    use enums for class members

commit 0d86454774
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 10 11:27:16 2024 +0100

    elide mode for QskTextField::PlaceholderText added

commit 0038f6d3b3
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 16:03:55 2024 +0100

    more enums specified

commit 5d95913366
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:56:49 2024 +0100

    QskSizePolicy enums specified

commit 4220edc7ca
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:46:43 2024 +0100

    don't use enum bitfields for unspecied enums

commit 36f502b57a
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:43:57 2024 +0100

    QskItem::UpdateFlags sepcified

commit 23beda3c28
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:39:06 2024 +0100

    more enum types specified

commit 0849571523
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:21:37 2024 +0100

    enum types specified

commit d53579f3d9
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 15:04:37 2024 +0100

    enum types specified

commit 4e6ee36420
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 14:53:59 2024 +0100

    NodeRole enums qualified as quint8

commit 3a83f5fa2c
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 13:29:03 2024 +0100

    compiler errors fixed

commit d1fa0207fa
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 12:10:10 2024 +0100

    Markdown format added

commit 66d97831b5
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 12:01:16 2024 +0100

    QskTextColors is a Q_GADGET now

commit 4ad28e6076
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 9 10:04:33 2024 +0100

    don't show the placeholder when text is not empty

commit b6f2003826
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Dec 4 10:08:39 2024 +0100

    QskTextFieldSkinlet::sizeHint added

commit f0d53322aa
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 3 17:52:39 2024 +0100

    gallery updated, dummy TextFieldSkinlets introduced

commit e86378a072
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 3 13:33:17 2024 +0100

    fusion skin improved

commit 4540cc1e4e
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 3 10:06:26 2024 +0100

    QskTextFieldSkinlet::Selected state introduced

commit 77e556fad2
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 3 09:32:39 2024 +0100

    QskTextField::placeholderText introduced, QskTextField::description
    removed

commit 77739d7734
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Dec 3 07:44:44 2024 +0100

    skin hint table size reduced

commit 108aa23397
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Dec 2 12:54:31 2024 +0100

    QskTextInput renamed to QskTextField ( term used by F2/M3 and QC2 )

commit b0864965a8
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Sun Dec 1 11:06:51 2024 +0100

    Material3 adjustements for progress bars

commit d18017ca90
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Fri Nov 29 13:55:30 2024 +0100

    QskProgressRing fixed + M3 updates

commit a58d6dd589
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Fri Nov 29 09:42:01 2024 +0100

    QskProgressIndicator::hasOrigin(), QskSlider::hasOrigin added

commit 12dfac153d
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 28 16:06:00 2024 +0100

    QskSlider::inverted introduced

commit db1e9a7e44
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 28 15:59:59 2024 +0100

    key handling of bounded inputs improved

commit d9a66e4a98
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 28 15:55:57 2024 +0100

    QskSlider API cleanup

commit 9d13cd1edf
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 28 15:47:20 2024 +0100

    subcontrol renamed from Knob to Handle

commit 7a180cfe5e
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 28 12:00:46 2024 +0100

    the corrected mouse/touch handling works without extending the handle
    selection area
    handle selection

commit 66085ea41f
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Nov 27 16:27:57 2024 +0100

    QskSlider::origin implemented

commit e2c76aa121
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Nov 27 16:24:55 2024 +0100

    QskSlider ticks implementaton completed

commit 77731954eb
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Nov 26 13:59:42 2024 +0100

    slider changes on press

commit 59b88ffd7c
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Nov 26 13:57:13 2024 +0100

    slider layout code fixed

commit cd65adb451
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue Nov 26 13:48:55 2024 +0100

    QskSkinnable::metric with default value

commit ea3d7a5e69
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Nov 25 09:02:04 2024 +0100

    QskInterval::center(), QskInterval::stretch removed as they the
    implementation is only handling normalized intervals

commit 494c370e61
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Fri Nov 22 17:38:58 2024 +0100

    ticks for F2 sliders

commit f4c2211f2c
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Fri Nov 22 17:37:47 2024 +0100

    API extended

commit 5c1e0ccad4
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 21 19:19:53 2024 +0100

    invalid constexpr qualifier removed

commit 9a5dd886ed
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 21 17:59:54 2024 +0100

    slider ticks - not only for M3

commit d04c030924
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 21 17:59:37 2024 +0100

    using constexpr

commit d87c8e3d0b
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 21 13:54:01 2024 +0100

    API cleanup of the Bounded controls

commit 109fc7d7f4
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Nov 20 14:57:16 2024 +0100

    QskBoxClipNode renamed to QskClipNode + more clip options added

commit 1e383406e2
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Nov 20 11:00:17 2024 +0100

    M3 specific definitions moved to M3 classes

commit 97e3ea6e1f
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Nov 18 16:44:06 2024 +0100

    Qt5 incompatibility fixed

commit 00f2112817
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Mon Nov 18 16:15:50 2024 +0100

    QskMaterial3SliderSkinlet introduced

commit 9fc7b1f677
Author: Peter Hartmann <peter@edelhirsch.io>
Date:   Mon Nov 18 12:18:30 2024 +0100

    push buttons: Style checked state properly (#477)

    Resolves #367

commit b5c56f7f80
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 14 10:52:08 2024 +0100

    mismatch between allocated and used memory fixed

commit d1c2751a8e
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 14 10:51:53 2024 +0100

    nullptr check added

commit 8dd5a7b249
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 14 08:52:40 2024 +0100

    dangling reference fixed

commit baaccb2f41
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 14 07:43:34 2024 +0100

    avoid enum bitfields

commit 7f389ef6cc
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Wed Nov 13 14:11:11 2024 +0100

    don't subtract the slider margins twice

commit d84ab6e387
Author: Peter Hartmann <peter@edelhirsch.io>
Date:   Wed Nov 13 10:00:38 2024 +0100

    Update instructions on how to build the website (#470)

    * Regenerate doxygen file

    ... and change some things

    * Add custom stylesheet from Skia

    * update instructions on how to build the website

commit 525ca3bd0e
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Thu Nov 7 17:31:14 2024 +0100

    QskSlider: Adapt to new Material3 style
    ( ValueLabel a.k.a Tooltip is not done yet )
2024-12-10 14:41:17 +01:00
.github Qt5/Mac CI fixed 2024-06-17 12:21:06 +02:00
cmake cmake files fixed for using the QuickShapes module 2024-09-13 10:27:13 +02:00
designsystems Squashed commit of the following: 2024-12-10 14:41:17 +01:00
doc synched with master 2024-12-02 11:03:37 +01:00
examples Squashed commit of the following: 2024-12-10 14:41:17 +01:00
inputcontext copyright notice generalised 2024-01-17 14:31:45 +01:00
playground Squashed commit of the following: 2024-12-10 14:41:17 +01:00
qmlexport broken QML version initialization fixed 2024-09-11 18:10:18 +02:00
src Squashed commit of the following: 2024-12-10 14:41:17 +01:00
support fonts.qrc split into several qrc files 2024-02-28 12:29:00 +01:00
tools wrong transformation ( from accidently removed viewBox ) in svg2qvg 2024-04-22 11:40:09 +02:00
.clang-format fix lower case 2023-08-09 08:30:56 +02:00
.gitignore renamed exported targets and files 2024-01-11 14:18:28 +01:00
.qmake.conf project file include mechanism based on QMAKEFEATURES 2019-03-31 13:05:25 +02:00
.uncrustify upgraded to uncrustify 0.76.0 - still not happy with the C++ beautifier 2023-02-28 15:49:42 +01:00
CMakeLists.txt extend execution rights 2024-02-01 11:56:07 +01:00
LICENSES wrong transformation ( from accidently removed viewBox ) in svg2qvg 2024-04-22 11:40:09 +02:00
README.md using cmake instead of make in the docs 2024-01-13 11:41:22 +01:00

README.md

QSkinny

CMake Build Matrix

The (Q)Skinny library is a framework built on top of the Qt scene graph and very few core classes from Qt/Quick. It offers a set of lightweight controls, that can be used from C++ and/or QML.

Doing the implementation in C++ allows to make use of the "scene graph" classes. Building controls from scene graph nodes allows for a lighter implementation than found with stacking "heavier" objects like QObject or QQuickItem. Offering a full featured C++ API allows the application code to benefit from following the same strategies.

Being "skinny" also means a design that separates concerns between the API and logic of the controls themselves, the styling of these controls, and the delegated rendering of the controls to the screen.

The code already provides a solid fundament for an automotive GUI with currently ~300K lines of pure C++ code. As expected it results in a good startup performance and a low memory footprint.

Nontheless QSkinny is lacking in areas like documentation. The QML API has not been completed after reaching a proof of concept state.

QSkinny is supposed to run on all platforms being supported by Qt/Quick. It might support other versions of Qt, but you can rely on:

  • Qt 5.15
  • current long term supported ( LTS ) version of Qt ( at the moment Qt 6.5.x )
  • current version of Qt

How to build, install and use QSkinny is described in this tutorial.

If you want to know more about QSkinny - or even like to give it a specific direction - please contact support@qskinny.org.

IOT dashboard

Contributing to QSkinny

QSkinny is licensed under the BSD 3 Clause License ( https://opensource.org/license/bsd-3-clause ). However we want to be able to offer more licenses on request.

If you are fine with these terms, you are welcome to contribute to QSkinny by completing the following steps:

  1. Agree to the terms of the Contributor Agreement. You can create a pull request first, then the licensing bot will check automatically whether you already signed the Agreement or not. If you have not signed it yet, it will take you to the Agreement to agree.
  2. Submit your pull request for review.