2012-04-04 20 views

Respuesta

14

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. :-)

5

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

6

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.

10

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