12
我無法理解Q_PROPERTY的用法。 Q_PROPERTY如何幫助制定計劃防禦?它是幹什麼用的?我看過論壇,但實際上無法做到它的應用。我已經理解了這個例子,但不是它的用法。Q_PROPERTY在Qt中有什麼意義?
下面是一個例子,我能從中獲得什麼。我明白閱讀只會給讀者一種特權。
write屬性將賦予只寫權限。但是它的需求是什麼?有人可以舉例說明嗎?
class MyClass : public QObject
{
Q_OBJECT
Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged)
Q_ENUMS(Priority)
public:
MyClass(QObject *parent = 0);
~MyClass();
enum Priority { High, Low, VeryHigh, VeryLow };
void setPriority(Priority priority)
{
m_priority = priority;
emit priorityChanged(priority);
}
Priority priority() const
{ return m_priority; }
signals:
void priorityChanged(Priority);
private:
Priority m_priority;
};
關於第一點,如果我們已經生成了一個接口,它可以被內省。沒有必要在那裏指定屬性。關於QML,如果我們聲明瞭Q_INVOKABLE或SLOT,那麼它可以由QML調用。 QProperty如何影響到那裏?第二點,我同意它可以做更多。第三點,我不明白。 –
@SHREYASJOSHI:槽通常用於無效返回值。對於每種方法,Q_INVOKABLE將是單調乏味的。此外,內省不僅僅是從QML中使用它,而且即使你可以這樣做,你也不會將它用作來自QML的真實屬性,而是函數調用。這會很煩人。第三點:編寫自己的getter/setter時,通常是相同的樣板文件是沒有意義的。 Qt 5會自動爲您生成。 – lpapp
+1 for *「不需要在普通讀寫情況下用Qt 5編寫樣板」*,不知道它。但是你有鏈接記錄嗎? (我找不到任何有關這方面的信息,例如[here](http://qt-project.org/doc/qt-5.0/qtcore/properties.html)。) – hyde