2012-10-22 30 views
17

我想設置一個整數來存儲在QWidget,我認爲setUserData成員函數會做的伎倆,但我找不到任何文檔。任何提示?如何設置QWidget的用戶數據?

+3

QObject :: setUserData被標記爲「internal」 - 可能建議避免使用它。 –

回答

20

您或許正在尋找QObject::setProperty()(這當然是由QWidget繼承)。

+0

是否有可能將一個對象(比如Foo類)指定爲屬性,並在查詢時將其取回,而不是僅使用字符串,整數或其他簡單數據類型屬性? – SexyBeast

+0

我不確定,因爲我不是QT專家。但是我在下面發佈的創建繼承類型的解決方案肯定適用於任意對象。你會簡單地用「Foo」取代「數據」。 –

12

我不是QT的專家,但爲什麼不創建一個繼承自QWidget並具有整數的類?像這樣:

class MyDerivedWidget : public QWidget 
{ 
    public: 
    MyDerivedWidget(); 

    private: 
    Data *myUserData; 
}; 

或者,如果你堅持使用setUserData結賬過去後here

+0

這是,如果你做明確的MyDerivedWidget(QWidget parent = 0){},簡單而有效,但它仍然聽起來有點哈克,但有用的答案,所以我投票了,thx。 –

+0

海事組織,這是兩個答案中最不起眼的。如果你想將數據存儲在一個QWidget中(而只是使用一個普通的結構體),正確的方法是繼承你想要的類,添加更多的功能,並做到「正確」。至少通過繼承,你可以添加訪問器等,使它比僅僅傳遞一個標準的QWidget和一個附加的隨機屬性更有用... – g19fanatic

+6

@ g19fanatic,恭敬地不同意(顯然圖書館設計師在我的side,否則'setProperty()'不存在)。有時,與實例相關聯的簡單「數據包」可能非常方便,而不必爲了獲得它而設計和維護整個子類。 –

相關問題