在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. Android合并两个APP的详细做法(掌握)

    有时候因公司需求,要求合并两个APP 使用里面的功能. 平台:Studio 小白鼠:二维码扫描 和自己项目 详细步骤: /**  * 1.将解压后的android/assets目录复制到项目中的mai ...

  2. 解决myeclipse在mac中Retina屏幕中模糊的终极详细方法

  3. hdoj--1379--DNA Sorting(排序水题)

     DNA Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. 第十五周 Leetcode 517. Super Washing Machines(HARD) 贪心

    Leetcode517 很有趣的一道题 由于每一步可以任选某些数字对它们进行转移,所以实际上是在求最优解中的最复杂转移数. 那么我们考虑,到底哪一个位置要经过的流量最大呢? 枚举每个位置,考虑它左边的 ...

  5. bzoj2521

    最小生成树+最小割 ...我太zz了,没看出来全体减1是一个加1,看见后就是sb题了... 我们发现根据克鲁斯卡尔的过程,我们把边从小到大加入,如果两点已经相连就跳过,那么我们把所有小于等于这条边的边 ...

  6. 在WIN7里IE8的开发人员工具打不开的解决办法

    IE8新增了开发人员工具,非常不错,比早期的DevToolbar好用多了.不过在我的Win7下使用的时候偶尔会出现一个莫名其妙的问题,就是整个开发人员工具窗口消失了,打不开了.当你使用win+Tab切 ...

  7. "git rm" 和 "rm" 的区别(转载)

    转自:http://yang3wei.github.io/blog/2013/02/03/git-rm-he-rm-de-qu-bie/ 这是一个比较肤浅的问题,但对于 git 初学者来说,还是有必要 ...

  8. 类似QQ消息左滑删除的Demo

    最近在网上学到一篇类似QQ消息左滑删除的demo,完善了下代码,感觉还不错,特此分享一波: CustomSwipeListView.java 是个继承自ListView的类,里面调用了自定义View ...

  9. ACM_Fibonacci数(同余)

    Fibonacci数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 斐波那契数列定义如下:f(0)=0,f(1)=1,f(n+2 ...

  10. 理解 Java 构造函数不可以继承

    参考来源:http://www.52bowen.com/a/2604620.html