Solo il costruttore ammette un tipo di ritorno non specificato (perchè è ovvio che il tipo di ritorno sarà dell' adt definito dalla classe).
E tra l' altro non so se sia permesso il carattere tilde come inizio nome.

Oltre a rispondere vorrei fare una domanda:
codice:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
// ecc...
#endif
Perchè questo ? Tu alla fine se non mettevi il tutto in una define ti bastava includere mainwindow.h e avevi quelle definizioni.Allora la domanda è: facendo così, cosa cambia?