Qt - Compiler reclama quando invoca setLayout () na minha MainWindow

Eu quero aprender a criar um gui à mão sem o designer. Eu tentei adicionar um layout ao meuMainWindow mas quando correndo diz

QWidget :: setLayout: Tentativa de definir QLayout "" na MainWindow "", que já possui um layout

Este é o meu 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();
}

O que está errado? Eu fiz o que meu livro dizia. Eu até procurei algum código na internet que era realmente difícil de achar de alguma maneira e ainda era o mesmo. Eu simplesmente não consigo adicionar um layout à minha janela.

questionAnswers(1)

yourAnswerToTheQuestion