2011-08-05 67 views
11

QObject::objectName屬性對於整個應用程序必須是唯一的嗎?例如,假設我有一個名爲「new」的按鈕,那麼我會在其他地方創建一個也稱爲「new」的QShortcut。是否會導致Qt問題?Qt的對象名稱必須是唯一的嗎?

我知道正確命名對象(稱爲「新」不是一個好名字),但我只是想知道我是否需要特別小心。

回答

13

對象名稱不必是唯一的。但是,在命名對象時,至少有兩件事可以考慮考慮:

  • QObject :: findChild() - 您可以按名稱搜索QObject的函數。
  • 樣式表。如果您曾經通過名稱爲小部件指定樣式表,它將應用於該小部件下層次結構中具有該名稱的樣式的對象。
4

其他的事情要考慮:

  • 對象不要求名稱。如果您沒有以任何有意義的方式使用這些名稱,則不必設置它們。我通常不會將它們設置爲像QTimer s等這樣的一次性對象。
  • 如果你使用設計器來創建一個.ui文件(聽起來不像你是,但以防萬一),uic傾向於吐出重複名稱的警告。因此,如果您不想看到這些警告,請將.ui文件中的名稱保持爲唯一(設計師傾向於通過在_1,_2等上添加重複名稱來強制執行此操作)。
+1

是否有任何方法在設計器中有重複的名稱?這對我有用。 –

+0

@ A.Danesh爲什麼有對象名稱重複? –

+0

@ K3 --- rnc我不記得確切的,但我想我已經使用QApplication :: setStyleSheet(。)爲一個小部件的名稱設置了一個樣式表。我希望所有具有相同名稱的小部件具有相同的樣式表。雖然這個任務可以用其他方式完成,例如動態屬性,但這種方式對我來說更容易。 –

相關問題