2012-04-04 3 views

답변

14

글쎄, 나중에 QObject에 액세스하는 방법에 따라 다릅니다. QObject에 액세스하는 데 사용할 수있는 여러 QObject.find() 함수가 있습니다. 이름은 검색을 필터링하는 "키"를 추가합니다.

예를 들어, 자신의 클래스에서는 검색 대신에 인스턴스 변수를 사용하지만 일반적으로 소유하지 않은 것을 실제로 전달할 수 있지만 원하는 특정 버튼이 있다는 것을 알고 있습니다 편집 (예 : Qt에 내장 된 QInputDialog 중 하나의 QPushButton). 버튼 이름을 지정하면 버튼 텍스트를 확인하거나 계층 구조에있는 위치를 세는 것이 훨씬 더 깨지기 쉽지만 버튼을 찾으면 쉽게 찾을 수 있습니다 (버튼이 사라지면 강력합니다, 레이아웃에서 움직이는 것 등) (예 : button 텍스트는 버전 간 또는 현지화로 인해 변경 될 수 있습니다. 누군가 새로운 레이아웃과 추가 버튼을 추가합니다.

또는 포인터 값을 인쇄 할 때 (즉, 어떤 QObject가 문제를 일으키는 지 알고 싶을 때) 좋은 디버그 텍스트가 필요할 수도 있습니다. 또한 스크립팅을 더 쉽게 만들지 만 여기서는 이유를 설명하지 않겠습니다.

이것은 실제로 빙산의 일각에 불과합니다. 당신은 정말로 당신이 그것을 필요로하고 오직 그 대답을 알고 있다면 이름을 설정할 필요가 있습니다. :-)

5

그것은 개체가 스크립트 인 경우에 의미가, 그리고 "버튼"개체 이름 몇 가지 이유 중 하나가있다

6

에게 인이

//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"); 

로 findChild 사용할 수 있습니다 내가 객체 이름을 사용하는 큰 이유는 in the Qt qdebug guide으로 설명 된 바와 같이 디버그 목적을위한 것입니다.

10

Qt 스타일 시트에서 객체의 이름을 ID Selector으로 사용할 수 있습니다.

예 : 당신이 속성은 하나의 특정 QLineEdit에 적용 할 경우, 당신은 QObject를 :: setObjectName를 (사용하는 이름을 지정) 및이를 참조하는 ID 선택기를 사용할 수 있습니다

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