2013-06-27 49 views

回答

2

Q_PROPERTY

從文檔(https://qt-project.org/doc/qt-4.8/properties.html):

Qt提供類似於由一些編譯器供應商提供的那些複雜的屬性的系統。但是,作爲一個獨立於編譯器和平臺的庫,Qt不依賴於像__property或[property]這樣的非標準編譯器功能。 Qt解決方案適用於Qt支持的每個平臺上的任何標準C++編譯器。它基於也通過信號和插槽提供對象間通信的元對象系統。

1

標準的制定者和getter看起來是這樣的:

void YourClass::setSomeValue(const type &newValue) { 
    if (newValue!=someValue) { 
     someValue = newValue; 
     emit someValueChanged(someValue); 
     // some optional invocations to update sizeHint or schedule widget redrawing ... : 
     update(); 
     updateGeometry(); 
    } 
} 

type YourClass::someValue() const { 
    return someValue; 
} 

,如果你正在尋找Objcetiveç像@synthesize有Qt中沒有這樣的事情,但你可以定義自己的宏(我做有時類似的東西)。

+0

這是物質,而不是風格,但感謝有用的模板。 – Bruce

+0

問題是「實現getter和setters的方式」,所以我不明白你的反對意見。 –

+0

我一直在尋找更符合Qt的Q_PROPERTY用法,而不是您的解決方案,它更像香草C++。 – Bruce