Ⅰ.2.6.5 如何测试QAction、QMenu、以及QMenuBar(Qt 4)

原创 2015年11月18日 15:58:01

如果我们想检查一个菜单项的属性,可以使用Squish IDE插入验证点,或者手写代码。这里我们介绍如何写代码。

QMenus(QWidgets 也是如此)有一份QAction 对象列表。我们可以获取这个列表,使用QList API 遍历它的actions,对于每个action我们可以查询或者设置它的属性。首先我们看一个访问一个action的属性的例子,然后看一下该例依赖的自定义函数 getAction 的实现。

    editMenu = waitForObject(":CSV Table - Unnamed.Edit_QMenu")
    removeAction = getAction(editMenu, "&Remove Row")
    test.verify(not removeAction.enabled)
    test.verify(not removeAction.checked)
    insertRowAction = getAction(editMenu, "&Insert Row")
    test.verify(insertRowAction.enabled)
    test.verify(not insertRowAction.checked)
这里我们获取一个应用程序的Edit 菜单的应用,检查remove row action是否可用以及是否可选,然后insert row action是否可用以及是否可选。(通常情况下是这样的,当使用 Tcl 时,我们选择使用test.compare 函数而不使用test.verify函数)。

def getAction(widget, text):
    actions = widget.actions()
    for i in range(actions.count()):
    action = actions.at(i)
    if action.text == text:
    return action
这个小函数获取所给widget的actions列表,然后遍历该列表知道找到符合text的action。返回对应的action(或者没找到,返回null)。


版权声明:本文为博主原创文章,未经博主允许不得转载。

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

Qt中要建立菜单,有三个类很重要: QMenuBar(QWidget * parent = 0) QMenu(QWidget * parent = 0) QMenu(const Q...
  • founderznd
  • founderznd
  • 2016年05月14日 22:29
  • 4005

关于QT的菜单QMenu和QAction

关于菜单,我之前并没有按照C++ GUI QT4 中所说的那样,用Action去添加菜单和工具栏,而是用了QMenuBar->addMenu 这种思路去做,最后将QMenuBar布局显示,界面什么的都...
  • u012283902
  • u012283902
  • 2014年03月09日 09:12
  • 2837

Qt 中关于菜单栏 QMenuBar 中 QMenuBarExtension 的qss 样式

在菜单栏中 伸缩菜单时 ,在菜单栏的右侧会出现一个水平快进样式的图标,若想替换掉该图标可以用如下方式 由于QMenuBarExtension是继承QToolButton的,在QMenuBar的源码中...
  • zxcvqpdbzl
  • zxcvqpdbzl
  • 2017年07月09日 20:57
  • 320

QT QMenu美化备忘

QMenu { background-color:white; background-image: url(../qss/menuBack.png) ; background-repeat: r...
  • zhouxiao2009
  • zhouxiao2009
  • 2014年04月05日 14:13
  • 1400

Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能

来源: Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能 Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能 ...
  • u011430225
  • u011430225
  • 2016年08月10日 14:00
  • 2006

Qmenu和Qaction

简介如下是实现一个菜单栏及下拉菜单的制作: 在mainwindow.h中添加 class QAction; class QMenu; 在pro中添加 QT += widgets QMen...
  • wdl20170204
  • wdl20170204
  • 2017年02月06日 13:52
  • 623

QMenu,QT的菜单添加

添加菜单方法1          m_pMenuBar= new QMenuBar(this);          QMenu*pFileMenu = new QMenu("&文件",m_...
  • sundan308
  • sundan308
  • 2013年03月31日 15:31
  • 2732

QMenu 设置透明背景

QMenu *menu= new QMenu(); menu->setWindowFlags(toolMenu->windowFlags() | Qt::FramelessWindowHint);...
  • abrahamchen
  • abrahamchen
  • 2013年06月20日 20:45
  • 1949

QMenuBar焦点问题 (QTBUG18896)

QTBUG18896,菜单栏菜单本来需要ALT+'M'(或其他字符)来激活,现在直接按'M'就可以激活了,原因何在?...
  • dbzhang800
  • dbzhang800
  • 2011年05月14日 23:40
  • 4211

QMenu和QAction创建及信号槽关联,实现子窗口调用

在开发过程中我们经常用到Qmenu来列出我们需要的菜单,类似Office菜单栏中的'开始、插入、页面布局、视图',用户可以根据自己的需要在菜单中添加对应的QAction,从而实现菜单列表的添加。...
  • zhangfuliang123
  • zhangfuliang123
  • 2015年05月06日 21:24
  • 1422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ⅰ.2.6.5 如何测试QAction、QMenu、以及QMenuBar(Qt 4)
举报原因:
原因补充:

(最多只允许输入30个字)