Положи QMainWindow на свой диалог и сними ему флажок Qt::Window.
wnd_ = new QMainWindow(this);
wnd_->setWindowFlags(wnd_->windowFlags() & !Qt::Window);
Таким способом получишь функционал QMainWindow в своем диалоге. Более того, можно многократно вкладывать QMainWindow один в другой )