Подтвердить что ты не робот

Что делает макрос Q_D в Qt

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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