Что делает макрос Q_D в Qt
Я изучаю исходный код Qt и наткнулся на этот макрос Q_D
. Может кто-нибудь объяснить, что он делает?
Почти все время он должен возвращать виджет типа, заданного в качестве параметра, который является переменной d
. Нужно больше разъяснений по этому вопросу.
Ответы
Ответ 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