Класс 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)
При нажатии появится диалоговое окно для димострации:
Все клавиши и модификаторы клавиш находятся в файле:
\QtCore\qnamespace.h