如何将图标放在QMenuBar和QToolbar的左侧?

问题描述 投票:0回答:1

我需要在 QMainWindow 的左上角放置一个图标。左边有一个工具栏和菜单栏,下面有一个工具栏,类似这个图:

我怎样才能实现这个目标?

qt qmainwindow qtoolbar qmenubar
1个回答
0
投票

这个答案基于我的答案:如何在菜单栏部分之前向 QMainWindow 添加标题?。我只会根据您的具体用例修改它。

您可以简单地使用布局来制作一个看起来像您需要的标题的普通小部件:

  • 带有 QHBoxLayout 的容器小部件。
  • 添加 QLabel 以在该布局中显示徽标。
  • 使用 QVBoxLayout 将另一个小部件添加到 QHBoxLayout。
  • 使用 QLayout::addWidget 将 QMenuBar 和 QToolBar 添加到第二个容器小部件。

然后将结果用作 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(&centralWidget);

    QToolBar leftToolBar;
    leftToolBar.setMinimumWidth(100);

    mainWindow.addToolBar(Qt::LeftToolBarArea, &leftToolBar);

    mainWindow.show();

    return a.exec();
}

结果:

© www.soinside.com 2019 - 2024. All rights reserved.