[Interest] Will Qt6 end this enum issue? (or even 5.15?)

Jérôme Godbout godboutj at amotus.ca
Thu Mar 19 16:07:26 CET 2020

I always put my Enum into C++, the sad part is that you need to create a dummy class to be exposeed to contain the enum. This make it possible to use the enum into Qml and C++. Enum from Qml are not super fun to be used. Can make function that convert the int value to the enum. Make an enum to string converter function too into C++. That will ease the tr() too.

-----Original Message-----
From: Interest <interest-bounces at qt-project.org> On Behalf Of Jason H
Sent: March 19, 2020 10:04 AM
To: interestqt-project.org <interest at qt-project.org>; Ulf Hermann <ulf.hermann at qt.io>
Subject: [Interest] Will Qt6 end this enum issue? (or even 5.15?)

The enums in QML are expressed as ints when printed. console.log(camera.position) => 1 I work around this as:
property var positions: ["Unspecified", "BackFace", "FrontFace"]
onPositionChanged: console.log(positions[position]);

Or worse yet:
property var flashModes: {
	  1: "FlashAuto",
	  2: "FlashOff",
	  4: "FlashOn",
	  8: "FlashRedEyeReduction",
	 16: "FlashFill",
	 32: "FlashTorch",
	 64: "FlashVideoLight",
	128: "FlashSlowSyncFrontCurtain",
	256: "FlashSlowSyncRearCurtain",
	512: "FlashManual"

It seems that enums should be class with a value and label
console.log(camera.position.label) => "BackFace"
console.log(camera.position.value) => 1

Though I can understand if this might not be the preferred way. It's just I spend so much time doing this. I'm open to anything really
console.log(Camera.positionEnum(camera.position).label) == "BackFace"
console.log(Camera.positionEnum(camera.position).value) == 1 or
console.log(Qt.enum(camera.position).label) == "BackFace"
console.log(Qt.enum(camera.position).value) == 1

Also, in Qt I occasionally encounter enums that are not registered and cannot be used in QML without registering them myself. Will Qt registering all enums for use in QML be standard for Qt 6?

Interest mailing list
Interest at qt-project.org

More information about the Interest mailing list