加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用自定义参数的QAction

发布时间:2020-12-16 03:25:52 所属栏目:百科 来源:网络整理
导读:我想在动态创建的QAction点击时使用参数执行我的插槽,但是在QMenu中创建QAction时我无法添加我的变量,并且默认的triggered()插槽无法通过它. 为了更清楚,我想要达到这样的目的: connect(someAction,SIGNAL( triggered(MyClass*) ),this,SLOT( execute(MyCla
我想在动态创建的QAction点击时使用参数执行我的插槽,但是在QMenu中创建QAction时我无法添加我的变量,并且默认的triggered()插槽无法通过它.

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

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

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

解决方法

您可以使用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 *>();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读