如何为 Qt 中的每个工具栏部分提供标题

Bha*_*thi 4 c++ qt

我需要设计一个自定义工具栏,如下图所示。为此,我使用了以下代码行:

m_ptrFileToolBar = new QToolBar("File",theUi->toolBar);
m_ptrNewAct = new QAction(QIcon(":/res/images/New.png"), tr("&New"), this);
m_ptrNewAct->setShortcuts(QKeySequence::New);
m_ptrNewAct->setStatusTip(tr("Create a new file"));
m_ptrFileToolBar->addAction(m_ptrNewAct);
Run Code Online (Sandbox Code Playgroud)

它仅显示工具栏操作。但我需要为每个工具栏部分提供标题。我该怎么做Qt

在此输入图像描述

Mee*_*fte 5

您必须继承QWidgetAction并重新实现QWidgetAction::createWidget()函数

QWidget *myWidgetAction::createWidget(QWidget *parent)
{
   QWidget *myWidget = new QWidget(parent);
   QAction *act1 = new QAction(QIcon(":/1.png"),tr("New"),myWidget);
   QAction *act2 = new QAction(QIcon(":/2.png"),tr("Open"),myWidget);
   QAction *act3 = new QAction(QIcon(":/3.png"),tr("Create"),myWidget);
   QToolBar *toolbar = new QToolBar(myWidget);
   toolbar->addAction(act1);
   toolbar->addAction(act2);
   toolbar->addAction(act3);
   QLabel *title = new QLabel("test");
   QGridLayout *grid = new QGridLayout(myWidget);
   myWidget->setLayout(grid);
   grid->addWidget(title,0,0,1,0,Qt::AlignCenter);
   grid->addWidget(toolbar,1,0,1,0,Qt::AlignCenter);
   return myWidget;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以将myWidgetAction对象添加到工具栏

m_ptrFileToolBar = new QToolBar("File",theUi->toolBar);
myWidgetAction *widgetAction = new myWidgetAction(this);
m_ptrFileToolBar->addAction(widgetAction);
Run Code Online (Sandbox Code Playgroud)