Qt какие заголовки включить? - PullRequest
9 голосов
/ 25 мая 2011

При программировании на C ++ с использованием Qt, что я должен делать? Всего 2 включает

#include <QtCore>
#include <QtGui>

или

#include <QWidget>
#include <QDialog>
#include <QList>
#include <QKeyEvent>
#include <QObject>

для каждого класса?

Спасибо!

Ответы [ 4 ]

11 голосов
/ 25 мая 2011

Включайте только определения классов, которые вам нужны - все остальное не просто лениво, это чрезвычайно расточительно и, на мой взгляд, плохой стиль.

Включение QtGui (который сам включает QtCore) приведет к добавлению350 (!) Заголовочных файлов для вашей компиляции, когда в вашем примере вам потребовалось только 6. Компиляция займет больше времени, и когда кто-то попытается сохранить ваше приложение и просматривает ваши файлы, он не сможет сделать вывод из того, что включаетименно это пытается сделать каждый файл / класс - им нужно прочитать весь исходный код, чтобы получить представление.

5 голосов
/ 25 мая 2011

Просто включите то, что вам нужно в ваших классах, чтобы ускорить компиляцию. Если вы один из ленивых парней и не важно, сколько времени занимает компиляция, выберите более общие заголовки, но избегайте их, если вы ищете оптимизацию (компилятор / компоновщик, скорее всего, удалит неиспользуемые вещи, но все равно лучше не включать его первым).

В общем, я включаю новые вещи только в том случае, если мне нужно что-то, что все еще отсутствует (т.е. еще не включено). Итак, просто нажмите на компиляцию. Если вам чего-то не хватает, добавьте заголовок. Если вам не нравится такой подход, используйте упомянутые вами общие заголовки.

2 голосов
/ 25 мая 2011

Если вы не хотите беспокоиться о включении каждого отдельного класса, включите целые компоненты:

#include <QtCore>
#include <QtGui>

И любой другой компонент QT, который вам нужно использовать

#include <QtNetwork>

и т. Д.

Если вы хотите явно указать свои зависимости, включите каждый отдельный класс

#include <QWidget>
#include <QDialog>
#include <QList>
#include <QKeyEvent>

и другие используемые вами классы QT.

0 голосов
/ 25 мая 2011

Разница только во времени компиляции.Если вы не используете заголовки прекомпиляции QtGui и QtCore, время компиляции сильно пострадает, и вы должны стараться избегать этого.

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