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

    二、结果展示

    Image

  • 相关阅读:
    汽车知识图谱
    医疗知识图谱与自动问答
    MongoDB(单节点)环境配置
    【字符串-01】
    【双指针-01】
    【排序-01】十大排序算法(Python实现)
    【队列-01】队列题目解析
    【栈-01】栈题目解析
    【贪心-02】贪心算法题目解析
    【贪心-01】贪心算法原理介绍
  • 原文地址:https://www.cnblogs.com/xiongxuanwen/p/5358446.html
Copyright © 2020-2023  润新知