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 *>(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |