Qt5について、下のようにすると、ボタンなどが全く表示されず、空のボックスが表示されます。コンパイルが通っているのでエラー?なのかどうかよくわかりませんが、コンソールに

QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout

と表示されます。setLayoutの使い方が間違っている気がするのですが、わかる方助けてください。

//Header
#include <QMainWindow>
#include<QVBoxLayout>
#include<QLabel>
#include<QPushButton>
#include<QHBoxLayout>

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
};
//mainファイル
#include "mainwindow.h"
#include <QApplication>

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

return a.exec();
}


 //cpp_file
#include "mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    QVBoxLayout *vLayout = new QVBoxLayout();
    vLayout->addWidget(new QLabel("hello"));
    vLayout->addWidget(new QPushButton("hello2"));
    QHBoxLayout *hLayout = new QHBoxLayout();
    hLayout->addLayout(vLayout);
    hLayout->addWidget(new QPushButton("hello3"));

    setLayout(hLayout);
}

MainWindow::~MainWindow()
{

}