[Development] QObject enum not readable in QML with Qt 5.12.4

Fabrice Mousset | GEOCEPT GmbH fabrice.mousset at geocept.com
Tue Aug 20 17:59:36 CEST 2019


Hi all,

I am **modernizing** our application from Qt 5.4.2 to last LTS version (Qt 5.12.4).
I have a problem which I can't understand and needs some help.

I have declared a QQuickPaintedItem object which has an enumeration to defined drawing types, like this:
class TourPlayerItem : public QQuickPaintedItem
{
    Q_OBJECT

public:
    enum DrawType // used also for draw order!
    {
        DrawTypeNormal,
        DrawTypeBackward,
        DrawTypeWorkRegion,
        DrawTypeContainerRegionSingle,
        DrawTypeContainerRegionDouble,
        DrawTypeOffline,
...
        };
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
    Q_ENUMS(DrawType)
#else
    Q_ENUM(DrawType)
#endif
...
}

This class is registered to be accessible from QML:
    qmlRegisterType<TourPlayerItem>("com.Geocept.Tour", 1, 0, "GCTourPlayer");

In QML, this class is used like this:
        GCTourPlayer {
            id: tourPlayerTrace 
            anchors.fill: parent
            drawTypes: [
                DrawType { type: GCTourPlayer. DrawTypeBackward; color: '#D9004D9E' },
                DrawType { type: GCTourPlayer.DrawTypeSubSections; color: '#E67814A0' }
            ]
        }

When I do this, I've got always '0' for type (color value is working well).
When I replace "GCTourPlayer.DrawTypeBackward " and "GCTourPlayer.DrawTypeSubSections" with corresponding integer value, type is set with excepted value.

This works without any problem with Qt 5.4.2.

Do I something wrong?

Thanks for any helps

Best regards

Fabrice



More information about the Development mailing list