¿Por qué deberíamos agregar un nombre de objeto a un QObject? Todavía puedo cargar y ejecutar cualquier objeto sin configurar el nombre.¿Por qué usar QObject :: setObjectName()?
Respuesta
Bueno, depende de cómo planee obtener acceso al QObject más adelante. Hay varias funciones QObject.find() que puede usar para obtener acceso a un QObject. El nombre agrega una "clave" para filtrar su búsqueda.
Por ejemplo, en su propia clase, probablemente use variables de instancia para esto en lugar de hacer una búsqueda, pero es posible que le pasen algo que normalmente no es suyo, pero sabe que hay un botón específico que desea editar (p. ej., un QPushButton en uno de los QInputDialogs integrados de Qt). Darle un nombre al botón lo hace fácil de encontrar (y es robusto si el botón desaparece, se mueve en el diseño, etc.), mientras que revisar el texto del botón o contar dónde está en la jerarquía sería mucho más frágil (por ej., Botón el texto puede cambiar entre versiones o debido a la localización, alguien agrega un nuevo diseño, un botón adicional).
O tal vez desee un texto de depuración agradable cuando imprima valores de puntero (es decir, desea saber qué QObject está causando un problema). También hace que las secuencias de comandos sean más fáciles, pero no explicaré por qué aquí.
Esto es realmente solo la punta del iceberg. Realmente solo necesita establecer el nombre si lo necesita y solo usted conoce esa respuesta. :-)
Tiene sentido en el caso de que el objeto es de secuencias de comandos, y se puede utilizar con findChild ya que esto
//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");
donde "botón" es el nombre del objeto
Hay un par de razones, una de Las razones principales por las que uso los nombres de los objetos son para depuración, como se describe en in the Qt qdebug guide.
Puede usar el nombre del objeto como ID Selector en Hojas de estilo Qt.
Ejemplo: si desea una propiedad que se aplican sólo a uno QLineEdit específica, puede darle un nombre utilizando QObject :: setObjectName() y utilizar un selector de ID para referirse a ella:
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
- 1. error con `QObject` subclase y constructor de copia:` QObject :: QObject (const QObject y) es private`
- 2. 'QObject :: QObject' no puede miembro privado de acceso declarado en la clase 'QObject'
- 3. ¿Por qué no puedo establecer un padre QObject en una clase de la cual QObject es solo una base indirecta?
- 4. QObject Multiple Herencia
- 5. Clonación de QObject
- 6. QVariant to QObject *
- 7. ¿Por qué usar NSAutoreleasePool?
- 8. ¿Por qué usar mysqli_close()?
- 9. Por qué usar scala.collection.immutable.Stack
- 10. ¿Por qué usar Mono?
- 11. ¿Por qué usar LabVIEW?
- 12. ¿Por qué usar hex?
- 13. ¿Por qué usar java.io.Console?
- 14. ¿Por qué usar document.write?
- 15. ¿Por qué usar Eventos?
- 16. Por qué usar (function() {....}());
- 17. ¿Por qué usar ThreadStart?
- 18. ¿Por qué usar NSFetchedResultsController?
- 19. ¿Por qué usar DialogFragment?
- 20. Por qué usar NSObjectController
- 21. ¿Por qué usar @PostConstruct?
- 22. ¿Por qué usar Mongrel2?
- 23. QObject :: deleteLater en un QThread
- 24. ¿Por qué QObject destruye la señal llamada DESPUÉS de la destrucción?
- 25. ¿Por qué debería usar Drools?
- 26. ¿Por qué usar un IDE?
- 27. ¿Por qué debería usar glBindAttribLocation?
- 28. CodeIgniter: ¿por qué usar xss_clean
- 29. ¿Por qué debería usar "aplicar"?
- 30. ¿Por qué debería usar @properties?