[Traducción] Modelo de objeto Qt

El modelo de objetos estándar de C ++ proporciona un soporte de tiempo de ejecución muy eficiente para el paradigma de objetos. Pero en algunas áreas problemáticas, sus características estáticas son inflexibles. La programación de la interfaz gráfica de usuario es un área que requiere tanto eficiencia operativa como un alto grado de flexibilidad. Al combinar la velocidad de C ++ con la flexibilidad del modelo de objetos QT, Qt proporciona esto.

Estas características de Qt extienden C ++:

  • Señales y ranuras muy potentes para una comunicación de objetos perfecta
  • Propiedades de objeto consultables y designables
  • Potentes eventos y filtros de eventos
  • Arriba y abajo para la internacionalización de la traducción de cadenas de texto
  • Los complicados temporizadores controlados por intervalos de tiempo hacen posible la integración elegante de muchas tareas en una GUI impulsada por eventos
  • Organizar el árbol de objetos jerárquico y consultable de propiedad de objetos de forma natural
  • Puntero inteligente (QPointer) Cuando se destruye el objeto referenciado, el puntero automático se establece en 0
  • Reparto dinámico para trabajar más allá de los límites de la biblioteca (qobject_cast <> ())
  • Admite la creación de tipos personalizados

Muchas de estas características de Qt se implementan en base a la tecnología C ++ estándar heredada de QObject. Otros, como el mecanismo de comunicación de objetos y el sistema de atributos dinámicos, requieren el sistema de metaobjetos proporcionado por el propio compilador de metaobjetos (moc) de Qt.
El sistema de metaobjetos es una extensión de C ++ que hace que el lenguaje sea más adecuado para la programación de GUI de componentes reales.

Estas clases forman la base del modelo de objetos Qt:

  • QMetaClassInfo : información adicional sobre la clase
  • QMetaEnum : metadatos sobre enumeración
  • QMetaMethod : metadatos sobre funciones miembro
  • QMetaObject : contiene metainformación sobre objetos Qt
  • QMetaProperty : metadatos sobre la propiedad
  • QMetaType : gestiona el tipo nombrado en el sistema de metaobjetos
  • QObject : la clase base de todos los objetos Qt
  • QObjectCleanupHandler : supervisa la vida útil de varios QObjects
  • QPointer : una clase de plantilla que proporciona punteros inteligentes a QObject
  • QSignalBlocker : encapsulación segura del bloqueo de señales de objetos
  • QSignalMapper : El enlace puede identificar la señal enviada por el remitente
  • QVariant : una unión de los tipos de datos Qt más comunes

Debido a los siguientes problemas, los objetos Qt han inhabilitado los operadores de asignación y construcción de copias:

  • El objeto puede tener un QObject :: objectName () único. Si copiamos un objeto Qt, ¿qué nombre le damos?
  • En la jerarquía del árbol de objetos. Si copia un objeto Qt, ¿dónde debería estar la copia?
  • Puede conectarse a otros objetos Qt para transmitir o recibir señales de ellos. Si copia un objeto Qt, ¿cómo se deben transferir estas conexiones a la copia?
  • Puede agregar nuevas propiedades en tiempo de ejecución, estas propiedades no se declaran en la clase C ++. Si copia un objeto Qt, ¿esta copia debe incluir los atributos agregados al objeto original?

Supongo que te gusta

Origin blog.csdn.net/kenfan1647/article/details/114953921
Recomendado
Clasificación