Подтвердить что ты не робот

Предупреждение о не-NOTIFYable свойствах в QML

У меня есть приложение на основе QML в Qt, которое генерирует некоторые предупреждения во время выполнения:

QDeclarativeExpression: Expression "(функция $text() {return pinyin })" зависит от не-NOTIFYable свойств: Ханзи:: DictionaryEntry:: пиньинь

Я считаю, что это относится к этому классу, который имеет некоторые свойства без уведомления (потому что не нужен):

#ifndef DICTIONARYENTRY_H
#define DICTIONARYENTRY_H

namespace hanzi {

class DictionaryEntry : public QObject {

    Q_OBJECT

    Q_PROPERTY(QString simplified READ simplified)
    Q_PROPERTY(QString traditional READ traditional)
    Q_PROPERTY(QString pinyin READ pinyin)
    Q_PROPERTY(QString definition READ definition)

public:

    explicit DictionaryEntry(QObject* parent = 0);
    const QString& simplified() const;
    const QString& traditional() const;
    const QString& pinyin() const;
    const QString& rawDefinition() const;
    const QStringList& definitions() const;
    const QString& definition() const;
    void setSimplified(const QString& v);
    void setTraditional(const QString& v);
    void setPinyin(const QString& v);
    void setDefinitions(const QStringList& v);

};

}
#endif // DICTIONARYENTRY_H

Кто-нибудь знает, почему он показывает эти предупреждения, и, если они не важны, есть ли способ их отключить?

4b9b3361

Ответ 1

Если значения свойств могут меняться, то QML нуждается в сигнале NOTIFY, чтобы он мог знать, когда они изменились и обновили привязки свойств.

Если они не могут измениться, добавьте CONSTANT в объявление свойства, например:

Q_PROPERTY(QString simplified READ simplified CONSTANT).

В вашем случае существуют установленные методы, которые подразумевают, что свойства могут меняться, но если они не меняются, когда они используются в вашем QML, вы можете избавиться от предупреждений, отметив их как CONSTANT.