QT中三种构建菜单栏的方法

方法1

《C++ GUI programming with Qt 4, Second Edition》给出的一种方法:QMenum定义单个菜单,调用menuBar()函数创建菜单栏,再往菜单栏里添加子菜单、Action或其他dialog。

.h

QMenu *file;

QMenu *edite;

QMenu *help;

QMenu *submenu;

QMenuBar *menubar;

QMenuBar *my_menubar;

QAction *openfile;

QAction *createfile;

QAction*recentfiles;

.cpp

openfile = new QAction(tr("&open"), this);

createfile = new QAction(tr("&newfile"), this);

recentfiles = new QAction(tr("&recentfiles"), this);

file = menuBar()->addMenu(tr("&file"));//QMainWindow::menuBar()返回一个QMenuBar的指针,第一次调用这个函数就会创建菜单栏

submenu = file->addMenu(tr("&submenu")); //添加子菜单

submenu->addAction(openfile);    //菜单里添加动作

file->addAction(openfile);

file->addAction(createfile);

file->addAction(recentfiles);

edite = menuBar()->addMenu(tr("&edite"));

help = menuBar()->addMenu(tr("&help"));

方法2

Qt中的弹出式菜单用类 QPopupMenu表示,每一个菜单需要编写代码逐个加入。

QPopupMenu* file = new QPopupMenu;

file->insertItem("&Open", this, SLOT( openFile() ) );

file->insertItem("&Save", this, SLOT( saveFile() ) );

file->insertSeparator();

file->insertItem("&Quit", this, SLOT( exitMain() ) );

第一句构造出一个弹出式菜单的实例,后面使用insertItem分别添加四条菜单项目。insertItem有多种使用形式,上面是最常用的也是最简单的一种。第一个参数表示菜单文本,第二个和第三个参数表示接受菜单事件的类和slot。需要注意的是insertItem()方法的第2,3个参数,这实际上是调用了connect()方法把菜单被选择这个事件和某个类的Slot()方法连接起来,这是很典型的用法。

方法3

Qt参考文档给出了一个综合性的方法,调用QMenuBar::insertItem()函数,其第二个参数是指向QPopupMenu类的指针

Example of creating a menu bar with menu items (from menu/menu.cpp):

QPopupMenu*file = newQPopupMenu(this );

file->insertItem(p1, "&Open",  this,SLOT(open()), CTRL+Key_O );

file->insertItem(p2, "&New", this, SLOT(news()), CTRL+Key_N );

menu = new QMenuBar( this );

menu->insertItem("&File", file );

In most main window style applications you would use themenuBar() provided inQMainWindow,addingQPopupMenusto the menu bar and addingQActionsto the popup menus.

Example (from action/application.cpp):

QPopupMenu* file = newQPopupMenu(this );

menuBar()->insertItem("&File", file );

fileNewAction->addTo(file );

QT中三种构建菜单栏的方法相关推荐

  1. tomcat中三种部署项目的方法(转)

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/h ...

  2. java swing 注册事件_比较Java Swing中三种注册事件的方法

    Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...

  3. Android 中三种启用线程的方法

    多线程就是分时利用CPU,宏观上让所有线程一起执行 ,也叫并发 先调用start后调用run 1.start()方法来启动线程,真正实现了多线程运行. 这时无需等待run方法体代码执行完毕,可以直接继 ...

  4. Java Web开发Tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  5. tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  6. java中三种转string的方法_java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  7. C++中三种产生随机数的方法

    第一种方法:使用时间做为生成随机数的种子 #include <iostream>using namespace std;// randomly generate 0 or 1 int ma ...

  8. Opencv中三种操作像素的方法

    测试环境:opencv3.1.0 + Visual Studio 2015 + win7 64位 opencv中有3中方法可以访问/修改图像的像素值,分别为: 1.      指针访问 2.      ...

  9. 收藏夹导出至html,分享win7电脑中三种导出浏览器收藏夹地址方法

    使用win7电脑浏览器访问网站时为了更方便之后的访问用户都会讲有需要的网站收藏,但是有些用户在使用浏览器时并不习惯登陆账户就会导致收藏夹无法同步,之后电脑出现故障时或是浏览器出现问题收藏内容就会消失, ...

最新文章

  1. Linux centos 安装VNC 服务过程
  2. Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组
  3. Python实现PLA(感知机)
  4. mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
  5. CodePlex关闭,建议迁移至GitHub
  6. ev10aq190a采集电路图_EV10AQ190A数模转换器
  7. python读取url中存储的数据_python 给定URL 如何获取其内容,并将其保存至HTML文档。...
  8. 诗与远方:无题(八十七)
  9. Redhat或者Centos 手动安装htop
  10. Oracle管理文件OMF (oracle managed files)
  11. armeabi-v7a arm64-v8a armeabi x86 x86_64区别
  12. 红外光学动作捕捉系统硬件安装使用教程
  13. 【用pandas_alive几行代码绘制竞赛动图】10.新南威尔士州 COVID 可视化(测试代码+数据集+绘图参数解析)
  14. 大数据实战【千亿级数仓】阶段三
  15. DM达梦数据库集群之分布式集群(MPP)主备
  16. RRDTool 中文手册-简易入门
  17. vue——axios请求成功却进入catch的原因
  18. 大学生能从计算机游戏中受益,2019年6月大学英语四级考试写作试题库:大学生...
  19. mysql连接密码加密_数据库连接用户名和密码加密
  20. java文件上传下载服务并发超时,震撼来袭免费下载!

热门文章

  1. Golang 位向量
  2. 手机尺寸相关的概念 +尺寸单位+关于颜色
  3. Win7家庭版启用Administrator账户
  4. Hbase备份与恢复(快照技术)
  5. php pack方法,php pack()函数详解与示例
  6. 霍夫曼编码实验matlab,哈夫曼编码 MATLAB程序
  7. docker执行容器内的shell_为什么不建议把数据库部署在docker容器内?
  8. 雷林鹏分享:PHP 变量
  9. java生成二维码打印到浏览器
  10. 多特蒙德主题本地个人任务清单小demo,你值得尝试!