On this page

CustomControl QML Type

Defines styling for a custom (non-built-in) control. More...

Import Statement: import Qt.labs.StyleKit
Inherits:

ControlStyle

Properties

Detailed Description

CustomControl allows you to define and style controls that are not part of Qt Quick Controls. This is convenient if you have additional controls or components that should be styled according to the active Style and Theme.

Like the built-in control types (such as abstractButton, pane, and slider), CustomControl inherits ControlStyle. Unlike built-in types, which are implicitly connected to their control type, a CustomControl requires controlType to be set explicitly. Apart from that, they work exactly the same way.

A Style or Theme can define as many custom controls as needed, and a CustomControl in a Theme can have the same controlType as one in the Style. That is no different from, for example, a slider being styled by both the Style and the Theme. The fallback logic is the same.

Any style properties not set on a CustomControl fall back to those set on a control.

The following snippet shows how to define styling for a custom control:

// MyStyle.qml

Style {
    id: style
    readonly property int myControlType: 0
    CustomControl {
        controlType: style.myControlType
        background {
            implicitWidth: 120
            implicitHeight: 30
            radius: 0
        }
        hovered.background.color: "lightslategray"
        pressed.background.color: "skyblue"
    }
}

And the following snippet shows an example on how to implement a custom control that uses it:

// Main.qml

component MyControl : Rectangle {
    StyleReader {
        id: styleReader
        controlType: StyleKit.style.myControlType
        hovered: hoverHandler.hovered
        pressed: tapHandler.pressed
        palette: app.palette
     }

    HoverHandler { id: hoverHandler }
    TapHandler { id: tapHandler }

    implicitWidth: styleReader.background.implicitWidth
    implicitHeight: styleReader.background.implicitHeight
    color: styleReader.background.color
    radius: styleReader.background.radius

    Text {
        font: styleReader.font
        anchors.centerIn: parent
        text: "ok"
    }
}

Note: Types in Qt.labs modules are not guaranteed to remain compatible in future versions.

See also StyleReader, ControlStyle, and Style.

Property Documentation

controlType : int

A unique integer identifying this custom control type. Set the same value on the StyleReader.controlType in your custom control implementation to connect it to this style definition.

Custom control types must be in the range 0 to 100000.

See also StyleReader.controlType.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.