2011-07-27 8 views
34

Estoy explorando el código fuente de Qt y me encontré con esta macro Q_D. ¿Podría alguien explicar por qué?¿Qué hace la macro Q_D en Qt

Casi todo el tiempo debe devolver un widget del tipo dado como parámetro que es la variable d. Necesita más aclaración sobre esto.

Respuesta

31

En resumen, Qt usa la implementación privada para administrar los datos. Para las clases que hacen esto, generalmente hay una clase X y una clase XPrivate. La macro Q_D define el puntero "d", por lo que si escribe d-> lo que sea, tiene acceso a esa parte de datos privados.

este artículo debe prácticamente cubierta la mayor parte de sus preguntas:

https://wiki.qt.io/D-Pointer

10

Q_D es parte de la implementación de Qt de d-punteros, o el patrón pimpl (aplicación privada). Se puede encontrar un poco más de información sobre todo esto en la wiki de Qt DevNet: http://developer.qt.nokia.com/wiki/Dpointer

+2

El enlace está muerto. Enlace actualizado: https://wiki.qt.io/D-Pointer – HeyYO