当前位置: 代码迷 >> QT开发 >> Qt中怎么获得触发的是哪个动作
  详细解决方案

Qt中怎么获得触发的是哪个动作

热度:98   发布时间:2016-04-25 04:56:26.0
Qt中如何获得触发的是哪个动作?
QAction *morenzuAction = new QAction(tr("默认组"),menu1);
menu1->addAction(morenzuAction);

connect(morenzuAction,SIGNAL(triggered()),this,SLOT(move_Action_triggered()));

菜单menu1中可能有多个action,想在槽函数中获得按下的是哪个action,谢谢~~


------解决方案--------------------
C/C++ code
//声明void menu1ActionClick(QAction *action);// 链接connect(menu1,SIGNAL(triggered(QAction *)),this,SLOT(menu1ActionClick(QAction *)));// menu1ActionClick定义// morenzuAction声明为类的成员变量void Window::menu1ActionClick(QAction *action){    if (action == morenzuAction)    {        setWindowTitle("morenzuAction click");    }}
------解决方案--------------------
另外一种方法:
在move_Action_triggered()函数中,通过sender()来判断是哪个action触发的
------解决方案--------------------
C/C++ code
QAction* action = qobject_cast<QAction*>(sender());
  相关解决方案