2012-04-04 144 views

回答

14

那麼,這取決於你計劃如何訪問QObject。有幾個QObject.find()函數可用於訪問QObject。該名稱添加一個「鍵」來過濾搜索。

例如,在你自己的類中,你可能使用實例變量來代替搜索,但實際上你可能會傳遞你通常不擁有的東西,但是你知道有一個你想要的特定按鈕編輯(例如,在Qt的內置QInputDialogs中的一個QPushButton)。給按鈕一個名稱可以很容易地找到(如果按鈕消失,在佈局中移動等,則該按鈕非常強大),而檢查按鈕文本或計算其在層次結構中的位置會更脆弱(例如,按鈕文本可能會在版本之間改變,或者由於本地化,有人添加新的佈局,額外的按鈕)。

或者當您打印指針值時(即,您想知道哪個QObject導致問題),您可能只需要一些很好的調試文本。它也使腳本更容易,但我不會在這裏解釋爲什麼。

這實在只是冰山一角。如果你有需要,你只需要設置名稱,只有你知道答案。 :-)

5

這使得在對象編寫腳本的情況下感,並能與findChild用作該

//button is the object name, which needs to be define in qml for the component.e.g. objectName: "button" 
QObject *buttonQML = view.rootObject()->findChild<QObject*>("button"); 

其中「按鈕」是對象名稱

10

您可以在Qt樣式表中使用該對象的名稱作爲ID Selector

例如:如果你想有一個屬性只適用於一種特定QLineEdit的,你可以使用的QObject :: setObjectName(給它一個名稱),並使用一個ID選擇器來引用它:

myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");