Thanks for your help, jpn!
This is essentially what I have except my subclass of QWidget is where the layout/menu stuff happens. So I have:
QVBoxLayout* layout = new QVBoxLayout(this);
QMenuBar* menuBar = new QMenuBar(this);
To copy to clipboard, switch view to plain text mode
Also my widget is created first inside MainWindow, then the dockwidget then I do:
dockwidget->setWidget(wrapper);
dockwidget->setWidget(wrapper);
To copy to clipboard, switch view to plain text mode
And it doesn't show up. Any clues?

Originally Posted by
jpn
For a main window, menu bar gets created on demand when QMainWindow::menuBar() is called. If you want a separate menu inside the dock widget:
QMenu* dockMenu
= menuBar
->addMenu
("Dock menu");
dockMenu->addAction("blaa");
layout->setMenuBar(menuBar);
layout->addWidget(textEdit);
dockWidget->setWidget(wrapper);
QDockWidget* dockWidget = new QDockWidget(mainWindow);
QWidget* wrapper = new QWidget(dockWidget);
QVBoxLayout* layout = new QVBoxLayout(wrapper);
QMenuBar* menuBar = new QMenuBar(wrapper);
QMenu* dockMenu = menuBar->addMenu("Dock menu");
dockMenu->addAction("blaa");
QTextEdit* textEdit = new QTextEdit(wrapper);
layout->setMenuBar(menuBar);
layout->addWidget(textEdit);
dockWidget->setWidget(wrapper);
To copy to clipboard, switch view to plain text mode
Bookmarks