Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用同一插槽时检测QMenu调用者_C++_Qt - Fatal编程技术网

C++ 使用同一插槽时检测QMenu调用者

C++ 使用同一插槽时检测QMenu调用者,c++,qt,C++,Qt,我有一个QMenu和添加到其中的操作。很好。假设它有一个名为“粘贴在此处”的菜单 现在我有3个按钮,我把这个菜单分配给三个按钮: btnNum1->setMenu(MyMenu); btnNum2->setMenu(MyMenu); btnNum3->setMenu(MyMenu); 现在在触发插槽中,当我执行以下操作时: qDebug() << QObject::sender(); 我不这么认为。如果你想区分它们,你可能需要创建三个不同的菜单对象。看看问题的正

我有一个QMenu和添加到其中的操作。很好。假设它有一个名为“粘贴在此处”的菜单

现在我有3个按钮,我把这个菜单分配给三个按钮:

btnNum1->setMenu(MyMenu);
btnNum2->setMenu(MyMenu);
btnNum3->setMenu(MyMenu);
现在在触发插槽中,当我执行以下操作时:

qDebug() << QObject::sender();

我不这么认为。如果你想区分它们,你可能需要创建三个不同的菜单对象。看看问题的正确答案。作为@folibis链接,你可以通过
QSignalMapper
@folibis轻松解决这个问题。如何为具有相同菜单的两个不同按钮定义相同的操作?我看不出SignalMapperyes有什么用,你说得对@johnmcken。您需要跟踪按钮导致菜单弹出的原因,而不是操作。所以,您可能需要重新定义
QPushButton
QMenu
,以便在按下按钮时设置指向按钮的合适指针。因此,您可以从
QAction->menu()->myPointerToButton