С++ матчасть хромает. Естественно препроцессор увидит повторньІй макрос при компиляции ОДНОГО cpp файла. Именно поетому существуют:
#ifndef A_H
#define A_H
..
#endif
Нужно так:
// fileinfo_p.h
#pragma once
#include <QFileInfo>
Q_DECLARE_METATYPE( QFileInfo )
И в каждом cpp, что юзает кастинг QVariant в сей или из сего типа включать fileinfo_p.h.