Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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

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++ Qt菜单栏事件_C++_Qt - Fatal编程技术网

C++ Qt菜单栏事件

C++ Qt菜单栏事件,c++,qt,C++,Qt,我使用“设计”选项在Qt creator中添加了菜单和菜单项。然后,我单击下面的关联操作,并单击“转到插槽”。这将带我进入当我点击该菜单项时将执行的代码。完美-几乎。我想区分单击菜单项和按住shift键单击菜单项。看起来我可以通过执行以下操作来确定是否使用shift按钮修改了事件: if (event->modifiers() & Qt::ShiftModifier) { ... } 问题是没有为菜单单击操作传递任何事件 我能做我想做的事吗?我是否需要弄清楚如何传入事件,

我使用“设计”选项在Qt creator中添加了菜单和菜单项。然后,我单击下面的关联操作,并单击“转到插槽”。这将带我进入当我点击该菜单项时将执行的代码。完美-几乎。我想区分单击菜单项和按住shift键单击菜单项。看起来我可以通过执行以下操作来确定是否使用shift按钮修改了事件:

if (event->modifiers() & Qt::ShiftModifier) {
    ...
}
问题是没有为菜单单击操作传递任何事件

我能做我想做的事吗?我是否需要弄清楚如何传入事件,或者是否有其他方法来测试是否按下了shift键


谢谢

在正在调用的插槽中,您可以使用该插槽获取当前键盘修改器:

void MainWindow::on_action_triggered() {
    if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
        // Shift key is down.
    }
}

@LukášBednařík Qt菜单栏系统使用
QAction::triggered
来处理未将事件传递到连接插槽的插槽,因此此信息无法直接获取。非常感谢!你太容易了,没问题。那样的话,你能接受这个答案吗?很抱歉。这是我第一次在这里发布问题。我不知道如何接受答案。