Yes, those two "inclusions" server different purposes.

The include in the cpp file is necessary for the compiler to know about the types and functions declared in that header, in order for code in the cpp file to use them
The adding to the HEADERS variable is necessary for Qt's MOC to process the Qt specific things inside the header, e.g. generate code for signal/slots

The two inclusion points are totally unrelated.

Cheers,
_