2011-07-18 16 views
31

mogę znaleźć zastosowanie w QML oparciu Qt, który wytwarza pewne ostrzeżenia w czasie wykonywania:ostrzeżenie o właściwościach nie NOTIFYable w QML

QDeclarativeExpression: Wyrażenie "(funkcja $ tekstu() {powrotu pinyin })" zależy na właściwości non-NOTIFYable: hanzi :: DictionaryEntry :: Pinyin

wierzę, że odnosi się do tej klasy, która ma pewne właściwości z żadnym zgłaszającego (bo nie jest to konieczne):

#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 

Czy ktoś wie, dlaczego wyświetla ostrzeżenia, a jeśli nie są ważne, czy istnieje sposób, aby je wyłączyć?

Odpowiedz

53

Jeśli wartości właściwości mogą się zmieniać, QML potrzebuje sygnału NOTIFY, aby mógł wiedzieć, kiedy się zmienił i zaktualizować powiązania właściwości.

Jeśli nie mogą zmienić, dodać CONSTANT do deklaracji właściwości, na przykład:

Q_PROPERTY(QString simplified READ simplified CONSTANT). 

W twoim przypadku, istnieją określone sposoby, co implikuje właściwości mogą się zmienić, ale jeśli tak nie zmieniaj je, gdy są używane w QML, możesz pozbyć się ostrzeżeń, oznaczając je jako CONSTANT.

+0

Idealny, dokładnie tego potrzebowałem. Dzięki! –

Powiązane problemy