在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(,));
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);

二、结果展示

Qt 给QWidget添加工具栏的更多相关文章

  1. Qt之QHeaderView添加复选框

    简述 前面分享了QTableView中如何添加复选框.本节主要介绍QTableView中的表头-QHeaderView添加复选框的功能,下面以水平表头为例,垂直表头类似! 简述 效果 QHeaderV ...

  2. Java基础之处理事件——添加工具栏(Sketcher 7 with File toolbar buttons)

    控制台程序. 工具栏在应用程序窗口中通常位于内容面板顶部的菜单栏下,包含直接访问菜单选项的按钮.在Sketcher程序中可以为最常用的菜单项添加工具栏. 工具栏是javax.swing.JToolBa ...

  3. VSTO Word2003 添加菜单栏, 添加工具栏

    直接上代码了:   Microsoft.Office.Core.CommandBar menuBar; CommandBarButton ccbtn = null;        CommandBar ...

  4. VC++添加工具栏

    VC添加工具栏 方法一:添加ICON图标 1. 新建一个基于对话框的项目:Test 2. 在类CTestDlg中, 添加两个变量: CToolBarCtrl m_ToolBar1; CImageLis ...

  5. 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...

  6. 如何在BCGControlBar界面库的CBCGPFormView子视图里面添加工具栏

    最近有一个项目需求,需要在子视图里面添加一个新工具栏用来处理当前视图对应模块的操作.之前在对话框模式下做过添加工具栏的实现,在CBCGPFormView中添加工具栏还是头一次.在这里记录一下,给自己留 ...

  7. Qt添加驱动——Qt数据库之添加MySQL驱动插件

    Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...

  8. QT中QWidget、QDialog以及MainWindow的区别

    参考 http://blog.csdn.net/u011619422/article/details/47311101 QT中QWidget.QDialog以及MainWindow的区别 QWidge ...

  9. 【Qt】QWidget、QDialog、QMainWindow的异同点【转】

    简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它 ...

随机推荐

  1. JBOSS和EJB学习一

    1.使用软件 IDE:Eclipse4.3(开普勒) EE版本 服务器:jboss EAP 6.2 eclipse-jboss plugin:jbosstools-Update-4.1.2.Final ...

  2. 定时删除clientmqueue

    * *  */1 * * cd /var/spool; cp -r clientmqueue /home/data/xl_project/var_spool_clientmqueue_$(date + ...

  3. TableLayout与MigLayout

    最近新接触的两个Layout,另外之前用的GridBagLayoutHelper以及最近听说的Qt for java的QCSS据说也不错, 只是Qt的跨平台需要单独发布,假如使用QT for java ...

  4. SparkSQL与Hive on Spark

    SparkSQL与Hive on Spark的比较 简要介绍了SparkSQL与Hive on Spark的区别与联系  一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapR ...

  5. 实现SpringBoot登录

    SpringBoot登录 https://www.cnblogs.com/jiekzou/p/9303871.html 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如 ...

  6. HTTP请求错误码大全(转)

    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 ...

  7. jquery对所有<input type="text"的控件赋值

    function resetData() {      $("input[type=text]").each(      function() {     $(this).attr ...

  8. 如何在 ubuntu 12.04 上安装 skype(转载)

    转自:http://blog.51osos.com/linux/how-to-install-skype-in-ubuntu-12-04/ 添加Canonical Partner Repository ...

  9. Java DOM方式解析XML(模板)

    //创建一个DocumentBuilderFactory工厂实例 DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance(); // ...

  10. robotframework - 基础关键词

    robotframework基础关键词如下: 1.可在python.notepad++ 编辑: *** Settings *** *** Test Cases ***variable ${a} Set ...