【发布时间】:2016-10-28 12:55:24
【问题描述】:
我在QTableWidget (resultTable) 中有一个弹出菜单。在我的类的构造函数中,我设置了上下文菜单策略:
resultTable->setContextMenuPolicy(Qt::CustomContextMenu);
connect(resultTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(popUpMenuResultTable(QPoint)));
popUpMenuResultTable 函数:
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) 并触发它。
例如:
我已经试过了:
QTest::mouseClick(resultTable, Qt::RightButton, Qt::NoModifier, pos, delay);
但它没有显示QMenu。
我使用的是 Qt 5.3.2。
【问题讨论】:
-
您是否尝试过向小部件发送上下文菜单事件? IE。创建一个
QContextMenuEvent并使用QCoreApplication::sendEvent()或QCoreApplication::postEvent()发送它 -
不,我没试过。你能提供一个简短的例子来说明我该怎么做吗?感谢您的帮助。
标签: qt qmenu qtestlib qaction qttest