加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt学习笔记:QMenuBar()、QMenu()和QAction()的使用

(2018-01-30 15:23:23)
分类: QT学习笔记

基本功能:

QMenuBar:就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

QMenu:菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

继承关系:

QMenuBar、QMenu:QWidget

QAction:QObject

    //TODO:明天到单位粘贴相应代码,问题点是在QMenuBar中新建QMenu,然后取QMenuBar()->QActions().size()会相应增加,说明在QMenuBar中对QMenu的管理使用了QAction,但此时使用QMenu进行强转获取的菜单操作异常,待解决。

     之所以出现//TODO中的问题,因为在QMenuBar中添加QMenu的同时,QAction会作为QMenu其中的属性,比如下图“文件”就是QAction,所以可以通过QMenuBar()->QActions().at(i)->Menu()就可以找到相应的菜单。

http://s11/mw690/00232jn7zy7hSPWao1Yca&690

      如果想找到例图中的“文件”菜单栏的几种方式:

1、if(QMenuBar()->QActions().at(i) == "文件”){

QMenu* one_menu = QMenuBar()->QActions().at(i)->Menu();

}

2、QMenu* one_menu = mainWindow->findChild("文件");


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有