gpt4 book ai didi

c++ - 带有自定义参数的 QAction

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:02 27 4
gpt4 key购买 nike

我想在点击动态创建的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 *>();
}

关于c++ - 带有自定义参数的 QAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com