Norman0406 / LISA

Lightweight Integrated System for Amateur Radio
GNU General Public License v3.0
2 stars 1 forks source link

Q_Property is unable to recognize enums for QsoEntry Mode and Frequency #3

Closed semaph0r closed 9 years ago

semaph0r commented 9 years ago

QMetaProperty::read: Unable to handle unregistered datatype 'QsoEntry::Mode' for property 'Logbook::Internal::QsoEntry::Mode'

class QsoEntry
        : public QObject
{
    Q_OBJECT

    enum FrequencyBand
    {
        BAND_UNKNOWN,
        BAND_160M,
        BAND_80M,
        BAND_40M,
        BAND_30M,
        BAND_20M,
        BAND_17M,
        BAND_15M,
        BAND_12M,
        BAND_10M,
        BAND_6M,
        BAND_2M,
        BAND_70CM,
        BAND_23CM,
        BAND_13CM,
        // UNDONE
    };

    enum Mode
    {
        MODE_AM,
        MODE_FM,
        MODE_SSB,
        MODE_USB,
        MODE_LSB,
        MODE_PSK,
        MODE_RTTY,
        // UNDONE
    };

    Q_PROPERTY(int ID MEMBER m_id)
    Q_PROPERTY(QDateTime DateTime MEMBER m_time)
    Q_PROPERTY(QString CallsignTo MEMBER m_callsign)
    Q_PROPERTY(QString Operator MEMBER m_operator)
    Q_PROPERTY(int Frequency MEMBER m_frequency)
    Q_PROPERTY(QsoEntry::Mode Mode MEMBER m_mode)
    Q_PROPERTY(int RstSent MEMBER m_rstSent)
    Q_PROPERTY(int RstRcvd MEMBER m_rstRcvd)
    Q_PROPERTY(QString Comment MEMBER m_comment)
Norman0406 commented 9 years ago

Ich glaube du kannst über Q_ENUMS die Enums in Qt registrieren, dann kannst du sie auch in Q_PROPERTY verwenden. Vielleicht brauchst du auch qRegisterMetaType.. Normalerweise kannst du dort halt nur Standard-Datentypen verwenden. Musst du Q_PROPERTY wegen der Datenbank verwenden? Kannte das bisher nur aus QML heraus.

semaph0r commented 9 years ago

Danke, hab schon angefangen an einem Fix zu arbeiten. Fragte aber mal nach, weil der Code ja von dir zu kommen scheint.

Ich denke es könnte sinnvoll sein die Q_PROPERTY zu nutzen, vermutlich werden sie im Rahmen der AbstractModel noch weiter nutzbar sein.

Norman0406 commented 9 years ago

Stimmt ja, die Q_PROPERTies kommen von mir. Ich glaube meine Hoffnung damals war, ein Objektmodell zu haben, das ich direkt bearbeiten kann, ohne SQL Statements zu brauchen. Das ist aber alles sehr unfertig, also mach ruhig alle Änderungen die du brauchst.