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添加到窗口中好了。通常的,工具栏处于窗口的顶部,因此,能够采起布局,将工具栏置于顶部便可。布局

     个人例子是要建立一个可停靠的组件箱,在组件 箱上方显示相应的工具栏,以下所示:this

1、 代码节选

//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);

2、结果展现

Image

相关文章
相关标签/搜索