Dlaczego powinniśmy dodać nazwę obiektu do obiektu QObject? Wciąż mogę załadować i uruchomić dowolny obiekt bez ustawiania nazwy.Dlaczego warto używać QObject :: setObjectName()?
Odpowiedz
Cóż, to zależy od tego, w jaki sposób planujesz uzyskać dostęp do QObject później. Istnieje kilka funkcji QObject.find(), których można użyć w celu uzyskania dostępu do obiektu QObject. Nazwa dodaje "klucz" do filtrowania wyszukiwania.
Na przykład we własnej klasie prawdopodobnie użyjesz do tego zmiennych instancji zamiast przeprowadzać wyszukiwanie, ale możesz faktycznie przekazać coś, czego zwykle nie posiadasz, ale wiesz, że istnieje określony przycisk, który chcesz edit (np. A QPushButton w jednym z QT wbudowanych QInputDialogs). Nadanie przycisku nazwy ułatwia odnalezienie (i jest niezawodny, jeśli przycisk zniknie, porusza się w układzie itp.), Natomiast sprawdzenie tekstu przycisku lub zliczenie jego położenia w hierarchii będzie znacznie bardziej kruche (np. Przycisk tekst może się zmieniać między wersjami lub z powodu lokalizacji, ktoś dodaje nowy układ, dodatkowy przycisk).
A może po prostu potrzebujesz ładnego tekstu debugowania podczas drukowania wartości wskaźnika (np. Chcesz wiedzieć, który obiekt QObject powoduje problem). Ułatwia także pisanie skryptów, ale nie wyjaśniam, dlaczego tak jest.
To naprawdę tylko wierzchołek góry lodowej. Naprawdę musisz tylko ustawić nazwę, jeśli potrzebujesz jej i tylko ty znasz tę odpowiedź. :-)
To ma sens w przypadku, gdy obiekt jest skrypty i może być używany z findChild jak ten
//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");
gdzie „przycisk” jest nazwa obiektu
Istnieje kilka powodów, jednym z Wielkie powody, dla których używam nazw obiektów, służą do celów debugowania, tak jak to zostało opisane na in the Qt qdebug guide.
Możesz użyć nazwy obiektu jako ID Selector w Arkuszach stylów Qt.
Przykład: jeśli chcesz nieruchomość zastosowanie tylko do jednego konkretnego QLineEdit, można nadać mu nazwę za pomocą QObject :: setObjectName() i używać selektor identyfikatora odnieść się do niego:
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
- 1. Dlaczego warto używać NSAutoreleasePool?
- 2. Dlaczego warto używać Gradle?
- 3. Dlaczego warto używać shm_open?
- 4. Dlaczego warto używać angularfire $ destroy()?
- 5. Dlaczego warto używać JIT UNITVERSIONING?
- 6. Dlaczego warto używać AsynchronousFileChannel Java?
- 7. Dlaczego warto używać wzorca konstruktora?
- 8. Dlaczego warto używać aliasingów klas?
- 9. ReactJS: Dlaczego warto używać this.props.children?
- 10. Dlaczego warto używać ROLAP zamiast zwykłego MySQL?
- 11. Dlaczego warto używać Celery zamiast RabbitMQ?
- 12. Dlaczego warto używać argparse zamiast optparse?
- 13. Dlaczego warto używać "succeed do" w Haml?
- 14. Dlaczego warto używać AsQueryable() zamiast List()?
- 15. Dlaczego warto używać spyOn zamiast jaśminu.createSpy?
- 16. Dlaczego warto używać Ext.apply w initComponent
- 17. Dlaczego warto używać opcji Opcjonalnie.Opcji na Opcjonalne.Niewłączalne?
- 18. Dlaczego warto używać var zamiast nazwy klasy?
- 19. Dlaczego warto używać statycznego w D?
- 20. Dlaczego warto używać metody classmethod zamiast staticmethod?
- 21. dlaczego warto używać WeakReference na Android Słuchacze?
- 22. Dlaczego warto używać Dart jako programisty?
- 23. Dlaczego warto używać $ {@ + "$ @"} w skryptach powłoki?
- 24. Dlaczego warto używać wielu kontekstów OpenGL
- 25. Dlaczego warto używać Long.valueOf (...) zamiast długiego literału?
- 26. Dlaczego warto używać MultiParamTypeClasses w MonadState?
- 27. Dlaczego warto używać Function.prototype.bind zamiast Function.prototype.call?
- 28. Dlaczego warto korzystać z @PostConstruct?
- 29. Dlaczego warto używać/*, */wokół argumentów i dlaczego używać >>> przy wyodrębnianiu długości tablicy?
- 30. Dlaczego warto używać bloku "do {} jeśli" w Perlu?