Qt 给QWidget添加工具栏,实现主窗口的工具栏类似的效果

在Qt中,给主窗口(QMainWindow类)添加工具栏非常方便,直接使用addToolBar 即可,如下所示:

fileToolBar = addToolBar(tr("&File"));
fileToolBar->addAction(fileNewAction);
fileToolBar->addAction(fileOpenAction);

但是,addToolBar 是QMainWindow 类的函数,在QWidget类中没有addToolBar类似的添加工具栏的函数,所以无法直接给QWidget类(QWidget的子类)添加工具栏。
能不能在QWidget类窗口中添加工具栏呢?当然可以。考虑到工具栏QToolBar其实也是QWidget的子类(class Q_GUI_EXPORT QToolBar : public QWidget ),直接把工具栏当作普通的QWidget添加到窗口中好了。一般的,工具栏处于窗口的顶部,所以,可以采取布局,将工具栏置于顶部即可。
我的例子是要创建一个可停靠的组件箱,在组件 箱上方显示相应的工具栏,如下所示:

一、代码节选

//2.1 工具栏
  compsBoxToolBar = new QToolBar(tr("组件"),dockCompTools);
  compsBoxToolBar->setIconSize(QSize(16,16));
  compsBoxToolBar->addAction(compsNewAction);
  compsBoxToolBar->addAction(compsOpenAction);
  compsBoxToolBar->addAction(compsSaveAction);
...
  //2.2 工具箱主体
  listComp = new XCompListWidget();
...
  //2.3 文本提示框
  QLabel* lbl = new QLabel(this);
  lbl->setText(tr("组件说明:"));
  txtTipComp = new QTextEdit();
...
  //2.4 布局
  QVBoxLayout *vboxLayout1 = new QVBoxLayout();
  vboxLayout1->addWidget(compsBoxToolBar);//把工具栏作为一个widget添加到布局中
  vboxLayout1->addWidget(listComp);
  vboxLayout1->addWidget(lbl);
  vboxLayout1->addWidget(txtTipComp);
...
  //2.5 应用布局
  QWidget* dockWidgetContents = new QWidget();
  dockWidgetContents->setLayout(vboxLayout1);

二、结果展示

这里写图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值