I am new to QT and just want to bring your attention to one minor feature of designer which caused a lot of confusion and lost time for me. I have a button btnConnect on the form and wanted to create a custom slot for clicked() signal. Designer added the following code to the generated .h file:
...
QObject::connect(btnConnect, SIGNAL(clicked()), MyProjectQtClass, SLOT(btnConnect_Clicked()));
...

My next step should be to add the slot for appropriate class. When I searched for "MyProjectQtClass", I found the line on the bottom of the same generated .h file:

namespace Ui {
class MyProjectQtClass: public Ui_MyProjectQtClass {};

I could not add any functions to that class because its definition was a part of compiler-generated header! It took me a while before I realized that this is pure coincidence and these are two different classes. "MyProjectQtClass" in the connect() call is in fact a parameter to the setupUi() function and "MyProjectQtClass" declared at the end of generated header is unrelated to it.

I think it was a bad decision for Designer programmers to use the same spelling for two unrelated items. It can be very easily fixed in the future.