Russian Qt Forum

Qt => Общие вопросы => Тема начата: Karl-Philipp от Ноябрь 26, 2009, 00:11



Название: Как работает слот submitAll()?
Отправлено: Karl-Philipp от Ноябрь 26, 2009, 00:11
Решил разобраться со слотом submitAll() из QSqlTableModel.
Код слота выглядит так:

Код
C++ (Qt)
bool QSqlTableModel::submitAll()
{
   Q_D(QSqlTableModel);
 
   switch (d->strategy) {
   ...
   }
   return false;
}

интересует указатель d:
Всплывющая подсказка показала, что это указатель на класс QSqlTableModelPrivate, находящийся в файле qsqltablemodel_p.h
Нажав на F2 перешел к объявлениею строкой выше:  Q_D(QSqlTableModel); Этот макрос #define Q_D(Class) Class##Private * const d = d_func()

Вопрос 1:
что за класс QSqlTableModelPrivate и для чего он нужен?
Вопрос 2: что означает макрос #define Q_D(Class) Class##Private * const d = d_func()
То есть расскажите, пожалуйста, подробно, что означает эта  запись?


Название: Re: Как работает слот submitAll()?
Отправлено: Пантер от Ноябрь 26, 2009, 00:28
Этот вопрос не относится к базам данных, троли применяют данный прием достаточно часто. Т.е. приватный класс и q, d указатели. К сожалению, толково я не смогу все объяснить.
ПыСы: Константин Очень хорошо разбирается в данном вопросе. ;)


Название: Re: Как работает слот submitAll()?
Отправлено: igor_bogomolov от Ноябрь 26, 2009, 00:43
Цитата: terlan
Вопрос 2: что означает макрос #define Q_D(Class) Class##Private * const d = d_func()
То есть расскажите, пожалуйста, подробно, что означает эта  запись?
Появилась такая статья на хабрахабре, может поможет  :)
Что такое Pimpl по версии Qt, и с чем его едят! (http://habrahabr.ru/blogs/qt_software/76248/)


Название: Re: Как работает слот submitAll()?
Отправлено: lit-uriy от Ноябрь 26, 2009, 00:48
А вот непосредственно о d-указателях от Jasmin Blanchette (не безызвестного):
http://qt.osdn.org.ua/data-sharing.html

(на русском)


Название: Re: Как работает слот submitAll()?
Отправлено: shender от Ноябрь 26, 2009, 11:36
Вчерашняя статья на Хабре, достаточно доступно

http://habrahabr.ru/blogs/qt_software/76248/


Название: Re: Как работает слот submitAll()?
Отправлено: Karl-Philipp от Ноябрь 26, 2009, 12:42
всем  большое спасибо, читаю :)