c – 使用自定义参数的QAction

前端之家收集整理的这篇文章主要介绍了c – 使用自定义参数的QAction前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在动态创建的QAction点击时使用参数执行我的插槽,但是在QMenu中创建QAction时我无法添加我的变量,并且默认的triggered()插槽无法通过它.

为了更清楚,我想要达到这样的目的:

connect(someAction,SIGNAL( triggered(MyClass*) ),this,SLOT( execute(MyClass*) );

我怎么能得到这个?我试图创建自定义QAction,但我不知道如何将它添加到QMenu – 没有像addAction(QAction)这样的函数.

解决方法@H_404_10@
您可以使用QAction :: setData()函数将参数作为QVariant存储在操作本身中.例如:
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 *>();
}

猜你在找的C&C++相关文章