Что делает макрос Q_D в Qt - PullRequest
49 голосов
/ 27 июля 2011

Я изучаю исходный код Qt и наткнулся на этот макрос Q_D.Может кто-нибудь объяснить, что он делает?

Почти все время он должен возвращать виджет типа, заданного в качестве параметра, который является переменной d.Нужно больше разъяснений по этому поводу.

Ответы [ 2 ]

48 голосов
/ 27 июля 2011

Короче говоря, Qt использует частную реализацию для управления данными.Для классов, которые делают это, обычно есть класс X и класс XPrivate.Макрос Q_D определяет указатель «d», поэтому, если вы напишите d-> что угодно, у вас будет доступ к этой частной части данных.

Эта статья должна в значительной степени охватить большинство ваших вопросов:

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

16 голосов
/ 27 июля 2011

Q_D является частью реализации d-указателей в Qt или шаблона pimpl (частная реализация). Немного больше информации обо всем этом можно найти в вики Qt DevNet: https://wiki.qt.io/D-Pointer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...