这个答案基于我的答案:如何在菜单栏部分之前向 QMainWindow 添加标题?。我只会根据您的具体用例修改它。
您可以简单地使用布局来制作一个看起来像您需要的标题的普通小部件:
然后将结果用作 QMainWindow::menuWidget。
左侧工具栏可以照常添加。
最小示例:
#include <QApplication>
#include <QMainWindow>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow mainWindow;
QWidget headerWidget;
QHBoxLayout headerLayout(&headerWidget);
headerWidget.setStyleSheet("background: darkgreen;");
QLabel label;
label.setPixmap(QPixmap(":/Resources/Images/icon.png"));
label.setFixedSize(label.pixmap().size());
headerLayout.addWidget(&label);
QWidget menuContainerWidget;
QVBoxLayout vboxLayout(&menuContainerWidget);
headerLayout.addWidget(&menuContainerWidget);
QMenuBar menubar;
QToolBar toolBar;
menubar.setStyleSheet("background: darkblue;");
toolBar.setStyleSheet("background: darkblue;");
vboxLayout.addWidget(&menubar);
vboxLayout.addWidget(&toolBar);
QMenu menu("menu");
menubar.addMenu(&menu);
mainWindow.setMenuWidget(&headerWidget);
QWidget centralWidget;
centralWidget.setStyleSheet("background: white;");
mainWindow.setCentralWidget(¢ralWidget);
QToolBar leftToolBar;
leftToolBar.setMinimumWidth(100);
mainWindow.addToolBar(Qt::LeftToolBarArea, &leftToolBar);
mainWindow.show();
return a.exec();
}
结果: