Тіпті QShortcut бойынша ресми құжаттама да көп нәрсені айтпайды, сондықтан толық мақаладан гөрі есте сақтау керек. Жылдам пернені басу немесе Ctrl + D сияқты жылдам пернелер тіркесімін өңдеуге жауап беретін QShortcut нысанын қосу жолы туралы бірнеше сөз.
Код Qt 5.4.1 негізінде QtCreator 3.3.1-де жазылған.
QShortcut үшін жоба құрылымы
Жоба құрылымы соншалықты тривиальды, мен оны бұл жазбаға қоспаймын. Мен екі файлмен жұмыс істейтін сөздермен ғана шектелемін:
- main window.h
- mainwindow.cpp
Және бұл жобадағы mainwindow.ui файлына да қол тигізбейміз. Ол әдепкі бойынша жасалатындықтан, біз оны қалдырамыз.
mainwindow.h
Тақырып файлында екі 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 = 0);
- ~MainWindow();
- private slots:
- // слоты для обработки нажатий горячих клавиш
- void slotShortcutF11();
- void slotShortcutCtrlD();
- private:
- Ui::MainWindow *ui;
- QShortcut *keyF11; // объект горячей клавиши F11
- QShortcut *keyCtrlD; // объект сочетания клавиш Ctrl + D
- };
- #endif // MAINWINDOW\_H
mainwindow.cpp
Ең төменгі жылдам перне параметрі:
- жылдам пернеге немесе жылдам пернелер тіркесіміне жауап беретін нысанды инициализациялауда;
- объектіге жылдам пернелер кодтарын беру;
- жылдам пернелердің SLOT өңдеушісін QShortcut нысанына қосу.
- #include "mainwindow.h"
- #include "ui\_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- keyF11 = new QShortcut(this); // Инициализируем объект
- keyF11->setKey(Qt::Key\_F11); // Устанавливаем код клавиши
- // цепляем обработчик нажатия клавиши
- connect(keyF11, SIGNAL(activated()), this, SLOT(slotShortcutF11()));
- keyCtrlD = new QShortcut(this); // Инициализируем объект
- keyCtrlD->setKey(Qt::CTRL + Qt::Key\_D); // Устанавливаем сочетание клавиш
- // подключаем обработчик нажатия клавиши
- connect(keyCtrlD, SIGNAL(activated()), this, SLOT(slotShortcutCtrlD()));
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- /* Слот для обработки нажатия клавиши F11
- * */
- void MainWindow::slotShortcutF11()
- {
- /* В этом обработчике сделаем переключение приложения
- * в полноэкранный режим и обратно в нормальный режим окна
- * */
- if(this->isFullScreen()){
- this->showNormal();
- } else {
- this->showFullScreen();
- }
- }
- /* Слот для обработки сочетания клавиш Ctrl + D
- * */
- void MainWindow::slotShortcutCtrlD()
- {
- /* Для обработки сочетания клавив Ctrl + D
- * сделаем информационный MessageBox,
- * который будет сигнализировать о том, что было нажато данное
- * сочетание клавиш
- * */
- QMessageBox::information(this,
- "Горячая клавиша",
- "Мои поздравления!!! Горячая клавиша работает",
- QMessageBox::Ok);
- }
Барлығы
Бұл мысал пернелер тіркесімін орнатудың бір жолын көрсетеді, ал ресми құжаттамада бірнеше жолдың мысалдары келтірілген:
- setKey(0); // сигнал не вызывается
- setKey(QKeySequence()); // сигнал не вызывается
- setKey(0x3b1); // Указание кода клавиши
- setKey(Qt::Key\_D); // 'd', указание кода клавиши через директиву define
- setKey('q'); // 'q', указание кода клавиши через символ
- setKey(Qt::CTRL + Qt::Key\_P); // Ctrl+P, указание сочетания клавиш через директивы define
- setKey("Ctrl+P"); // Ctrl+P, прямое написание сочетания клавиш
- /* Сочетания клавиш необходимо прописывать через знак "+" */
Нәтижесінде сізде F11 пернесін басқан кезде толық экран режиміне дейін кеңейетін және қалыпты терезе дисплейіне қайтаратын қолданба болуы керек, сонымен қатар Ctrl + D пернелер тіркесімін басқанда, MessageBox шақырады, бұл пернелер тіркесімі басылғанын білдіреді.
QShortcut көмегімен қолданба