Qt - tworzenie skrótów klawiaturowych

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2008 razy

Każdy poważny program powinien korzystać z skrótów klawiaturowych, toteż i ja z najdzikszą rozkoszą pędzę z świetną wiadomością, że i w Qt można ustawić skróty z wykorzystaniem klasy QShortcut. Oczywiście będę wciąż tutaj bazował na rozpoczętym na stronie Programowanie → Qt Creator GUI → Qt - kontrolka QTextEdit projekcie, do którego niezwłocznie w pliku mainwindow.h dodać należy plik nagłówkowy QShortcut a do klasy MainWindow dodać następujące pola:

QShortcut *shOpen; QShortcut *shSave; QShortcut *shBold; QShortcut *shItalic; QShortcut *shUnderline;

W pliku mainwindow.cpp w konstruktorze klasy MainWindow niezwłocznie należy zainicjalizować powyższe pola klasy:

shOpen = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_O), this, SLOT(on_actionOpen_triggered())); shSave = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_S), this, SLOT(on_actionSave_triggered())); shBold = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this, SLOT(on_actionBold_triggered())); shItalic = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_I), this, SLOT(on_actionItalic_triggered())); shUnderline = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_U), this, SLOT(on_actionUnderline_triggered()));

W powyższym kodzie tworzę obiekt klasy QShortcut przypisując odpowiedni skrót klawiaturowy, wskaźnik do okna otrzymującego sygnał oraz slot tego okna, pod który skrót zostanie podpięty.

W programie konieczne było jeszcze wprowadzenie zmian w poniżej wypisanych metodach klasy MainWindow:

void MainWindow::on_actionBold_triggered() { if(ui->edit->fontWeight() == QFont::Bold){ ui->edit->setFontWeight(QFont::Normal); ui->actionBold->setChecked(false); }else{ ui->edit->setFontWeight(QFont::Bold); ui->actionBold->setChecked(true); } } void MainWindow::on_actionItalic_triggered() { ui->edit->setFontItalic(!ui->edit->fontItalic()); ui->actionItalic->setChecked(ui->edit->fontItalic()); } void MainWindow::on_actionUnderline_triggered() { ui->edit->setFontUnderline(!ui->edit->fontUnderline()); ui->actionUnderline->setChecked(ui->edit->fontUnderline()); }
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-4.8/qshortcut.html - opis klasy QShortcut na stronie dokumentacji Qt
Propozycje książek