Qt - El compilador se queja cuando invoca setLayout () en mi MainWindow

Quiero aprender a crear una interfaz gráfica de usuario a mano sin el diseñador. Traté de añadir un diseño a miMainWindow pero cuando se ejecuta dice

QWidget :: setLayout: Intentando establecer QLayout "" en MainWindow "", que ya tiene un diseño

Este es mi código:

//Header
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    QHBoxLayout *layout;
};

//Constructor in my *.cpp
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    layout = new QHBoxLayout;
    this->setLayout(layout);
}

//The usual main function
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

¿Qué está mal? Hice lo que decía mi libro. Incluso busqué un código en Internet que era muy difícil de encontrar de alguna manera y seguía siendo el mismo. Simplemente no puedo agregar un diseño a mi ventana.

Respuestas a la pregunta(1)

Su respuesta a la pregunta