首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QAction库访问QtTest?

如何使用QAction库访问QtTest?
EN

Stack Overflow用户
提问于 2016-10-28 12:55:24
回答 1查看 459关注 0票数 1

我在QTableWidget (resultTable)中有一个弹出菜单.在我的类的构造函数中,我设置了上下文菜单策略:

代码语言:javascript
复制
resultTable->setContextMenuPolicy(Qt::CustomContextMenu);
connect(resultTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(popUpMenuResultTable(QPoint)));

popUpMenuResultTable函数:

代码语言:javascript
复制
void MyClass::popUpMenuResultTable(QPoint pos)
{
    QMenu menu;
    QAction* actionExport = menu.addAction(QIcon(":/new/prefix1/FileIcon.png"), tr("Export"));
    connect(actionExport, SIGNAL(triggered()), this, SLOT(exportResultsTable()));
    menu.popup(pos);
    menu.exec(QCursor::pos());
}

现在,我需要实现一个函数来使用QtTest库测试GUI。

如何通过右键单击我的resultTable来生成与用户相同的结果?基本上,我需要访问actionExport (QAction)并触发它。

例如:

我已经试过了

代码语言:javascript
复制
QTest::mouseClick(resultTable, Qt::RightButton, Qt::NoModifier, pos, delay);

但它没有显示QMenu

我使用的是Qt 5.3.2。

EN

回答 1

Stack Overflow用户

发布于 2016-10-31 17:25:42

也许并不完全是你所追求的,而是一种更容易测试的替代方法。

而不是手动创建菜单,而是向小部件注册操作并使用Qt::ActionContextMenu

代码语言:javascript
复制
// e.g. in the widget's constructor
resultTable->setContextMenuPolicy(Qt::ActionsContextMenu);

QAction* actionExport = menu.addAction(QIcon(":/new/prefix1/FileIcon.png"), tr("Export"));
connect(actionExport, SIGNAL(triggered()), this, SLOT(exportResultsTable()));
resultTable->addAction(actionExport);

然后将访问器添加到返回resultTable->actions()的小部件中,或者使actionExport成为类的成员。一旦您的测试代码能够访问该操作,它就可以简单地调用其触发器trigger()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40305610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档