На этом шаге приведем некоторые рекомендации для проектов Qt.
При реализации файлы классов лучше всего разбивать на две отдельные части:
В заголовочном файле с определением класса должна содержаться директива препроцессора #ifndef. Смысл этой директивы состоит в том, чтобы избежать конфликтов в том случае, когда один и тот же заголовочный файл будет включаться в исходные файлы более одного раза.
#ifndef _MyClass_h_ #define _MyClass_h_ class MyClass { ... }; #endif //_MyClass_h_
По традиции заголовочный файл, как правило, носит имя содержащегося в нем класса. В заголовочных файлах, в целях более быстрой компиляции, для указателей на типы данных используется предварительное объявление для типа данных, а не прямое включение посредством директивы #include. В начале определения класса содержится макрос Q_OBJECT для MOC (метаобъектный компилятор, Meta Object Compiler); это необходимо, если ваш класс использует сигналы и слоты, а в других случаях, если у вас нет нужды в метаинформации, этим макросом можно пренебречь.
class MyClass : public QObject { Q_OBJECT public: MyClass(); ... };
Основная программа должна быть реализована в отдельном файле, который является "стартовой площадкой" приложения. Этому файлу принято давать имя main.cpp.
На следующем шаге рассмотрим метаобъектный компилятор.