QShortcut в Qt

Автор: | 22 октября, 2022

Класс QShortcut обеспечивает способ подключения сочетания клавиш к механизмам и слотам QT, чтобы объекты могли быть проинформированы. Комплект может быть настроен, чтобы содержать все нажатия клавиш,  включая состояния клавиш модификатора, такие как Shift, Ctrl и Alt.

Для  использования возможностей горячих клавиш необходимо подключить заголовочный файл:

#include <QShortcut>

Важно помнить что горячие клавиши работают только в активное окно.

Рассмотрим пример реализации:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QShortcut>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    // F7
    QShortcut *keyF7;
    // Ctrl + V
    QShortcut *keyCtrlV;


private slots:
    void slotF7();
    void slotCtrlV();



};

#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    keyF7 = new QShortcut(this);
    keyF7->setKey(Qt::Key_F7);
    connect(keyF7, SIGNAL(activated()), this, SLOT(slotF7()));

    keyCtrlV = new QShortcut(this);
    keyCtrlV->setKey(Qt::CTRL + Qt::Key_V);
    connect(keyCtrlV, SIGNAL(activated()), this, SLOT(slotCtrlV()));
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::slotF7()
{
    QMessageBox::information(this,"keyF7", "slotF7", QMessageBox::Ok);
}

void MainWindow::slotCtrlV()
{
    QMessageBox::information(this,"keyCtrlV", "slotCtrlV", QMessageBox::Ok);
}

В данном примере реализовано два набора горячих клавиши:

  • Key_F7 (F7)
  • CTRL + Key_V (Ctrl+V)

При нажатии появится диалоговое окно для димострации:

Сообщение F7
Сообщение Ctrl+V

Все клавиши и модификаторы клавиш находятся в файле:

\QtCore\qnamespace.h