実行時にいくつかの警告を生成するQMLベースのアプリケーションがあります。
QDeclarativeExpression:式「(function $ text(){return pinyin})」は、NOTIFYできないプロパティに依存します:hanzi :: DictionaryEntry :: pinyin
私はそれがノーティファイアのないいくつかのプロパティを持っているこのクラスを参照していると信じています(必要ないため):
#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
なぜこれらの警告が表示されているのか誰か知っていますか?それらが重要ではない場合、それらを無効にする方法はありますか?
プロパティ値が変更される可能性がある場合、QMLはNOTIFY
信号を必要とするため、それらがいつ変更されたかを認識し、プロパティバインディングを更新できます。
変更できない場合は、CONSTANT
をプロパティ宣言に追加します。次に例を示します。
Q_PROPERTY(QString simplified READ simplified CONSTANT).
あなたのケースでは、プロパティが変更される可能性があることを意味するsetメソッドがありますが、QMLで使用されているときに変更されない場合は、CONSTANT
としてマークすることで警告を取り除くことができます。