[Development] QML Component inheriting?

Simon Hausmann simon.hausmann at digia.com
Thu Oct 4 12:04:51 CEST 2012


On Thursday, October 04, 2012 10:36:59 AM Mark wrote:
> Hi,
> 
> The principle is simple. I'd like to be able to make a base component
> and create different implementations of it. What i really miss in QML
> is the ability to let a component inherit functionality from another
> component.
> For example the following where we have a base button with different
> features depending on which one you use:
> 
> BaseButton
> {
>    property int someNum: 100
>    ... the basics for a button.
> }
> 
> SpecialButton inherits BaseButton
> {
>    somenum: 500
>    ... A BaseButton adjusted for special cases
> }
> 
> FancyButton inherits BaseButton
> {
>    ... Fancy button with special effects, shaders and whatever you can think
> of }
> 
> This is obviously just an example but you get the point. What i'd
> expect to happen is all property's of the BaseButton to be available
> in the buttons that inherit from the base. I don't expect (or need)
> more specific object orientated things like abstract, public, private
> or protected things. Just having the ability to inherit from another
> component would be really awesome to have and would probably benefit a
> lot of users as well. Just imagine all the cases where people want to
> make a custom component but keep all the properties of their base
> component. Right now they have to make a bunch of property alias lines
> to expose the base button functionality. That would not be needed
> anymore of the above would be possible.
> 
> Is there any possibility of getting this functionality in QML 2.1 (or
> 3.0?) or Qt 5.1.. Are there any plans at all for something like this?

You can get that functionality today already:

BaseButton.qml:

Item {
    property int someNum: 100
}

SpecialButton.qml:

BaseButton {
    someNum: 500
}

SomebodyUsingAButton.qml:

...
SpecialButton {
    someNum: 250;
}


Note now the "root" item in the .qml _file_ becomes the "base class".


Simon



More information about the Development mailing list