使用快捷方式创建QACTION,而无需插入菜单

Create QAction with shortcut, without inserting in menu

本文关键字:插入 菜单 快捷方式 创建 QACTION      更新时间:2023-10-16
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <cassert>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QAction* back = new QAction(this);
    back->setVisible(true);
    back->setShortcut(QKeySequence("Ctrl+M"));
    bool cres = connect(back, SIGNAL(triggered(bool)), this, SLOT(mySlot()));
    assert(cres);
}

在此代码中,我尝试捕获Ctrl+M密钥事件。我不想将动作放入菜单中。connect返回true,但mySlot从未被调用。当在菜单中插入操作时,快捷方式效果很好。我做错了什么?

QAction在将其插入某个位置之前处于休眠状态。正如Vahancho所建议的那样,使用QShortcut。您需要对每个顶级小部件(窗口)的快捷方式进行快捷方式,在此您希望它活跃。因此,如果您有5个顶级窗口,则需要5个快捷方式,每个窗口都有一个窗口作为其父。

没有GUI的全局快捷方式无法使用QShortcutQShortcut仅在其关联的小部件具有焦点时才活跃。小部件可以是顶级窗口。

System-Global快捷方式是此问题的主题。