Qt - tworzenie skrótów klawiaturowych

Stronę tą wyświetlono już: 20 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:

Listing 1
  1. QShortcut *shOpen;
  2. QShortcut *shSave;
  3. QShortcut *shBold;
  4. QShortcut *shItalic;
  5. QShortcut *shUnderline;

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

Listing 2
  1. shOpen = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_O), this, SLOT(on_actionOpen_triggered()));
  2. shSave = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_S), this, SLOT(on_actionSave_triggered()));
  3. shBold = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this, SLOT(on_actionBold_triggered()));
  4. shItalic = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_I), this, SLOT(on_actionItalic_triggered()));
  5. 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:

Listing 3
  1. void MainWindow::on_actionBold_triggered()
  2. {
  3. if(ui->edit->fontWeight() == QFont::Bold){
  4. ui->edit->setFontWeight(QFont::Normal);
  5. ui->actionBold->setChecked(false);
  6. }else{
  7. ui->edit->setFontWeight(QFont::Bold);
  8. ui->actionBold->setChecked(true);
  9. }
  10. }
  11. void MainWindow::on_actionItalic_triggered()
  12. {
  13. ui->edit->setFontItalic(!ui->edit->fontItalic());
  14. ui->actionItalic->setChecked(ui->edit->fontItalic());
  15. }
  16. void MainWindow::on_actionUnderline_triggered()
  17. {
  18. ui->edit->setFontUnderline(!ui->edit->fontUnderline());
  19. ui->actionUnderline->setChecked(ui->edit->fontUnderline());
  20. }
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-4.8/qshortcut.html - opis klasy QShortcut na stronie dokumentacji Qt

Komentarze