我在Qt中有一个基于QML的应用程序,它在运行时生成一些警告:
QDeclarativeExpression:Expression“(function $ 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
有人知道为什么它会显示这些警告,如果它们不重要,有没有办法禁用它们?
答案 0 :(得分:72)
如果属性值可以更改,那么QML需要一个NOTIFY
信号,以便它可以知道它们何时发生了更改并更新了属性绑定。
如果无法更改,请将CONSTANT
添加到您的媒体声明中,例如:
Q_PROPERTY(QString simplified READ simplified CONSTANT).
在你的情况下,有一些set方法,这意味着属性可以改变,但如果它们在你的QML中被使用时没有改变,你可以通过将它们标记为{{1}来消除警告。 }}