单击动态创建的QAction时,我想使用参数执行插槽,但是在QMenu中创建QAction时,我无法添加变量,默认triggered()
插槽无法传递它。
更清楚地说,我想归档以下内容:
connect(someAction, SIGNAL( triggered(MyClass*) ), this, SLOT( execute(MyClass*) );
我怎么能得到这个?我尝试创建自定义QAction,但是我不知道如何将其添加到QMenu-没有类似的功能addAction(QAction)
。
您可以将参数作为QVariant
使用QAction::setData()
函数存储在操作本身中。例如:
QVariant v = qVariantFromValue((void *) yourClassObjPointer);
action->setData(v);
在插槽中,您将必须提取指针,例如:
void execute()
{
QAction *act = qobject_cast<QAction *>(sender());
QVariant v = act->data();
YourClass yourPointer = (YourClass *) v.value<void *>();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句