Если событие сгенерировано нажатием клавиши клавиатуры, мы преобразуем объект типа
Высокоуровневый метод обработки клавиш клавиатуры заключается в применении класса
01 MainWindow::MainWindow()
02 {
03 editor = new CodeEditor;
04 setCentralWidget(editor);
05 goToBeginningOfLineAction =
06 new QAction(tr("Go to Beginning of Line"), this);
07 goToBeginningOfLineAction->setShortcut(tr("Home"));
08 connect(goToBeginningOfLineAction, SIGNAL(activated()),
09 editor, SLOT(goToBeginningOfLine()));
10 goToBeginningOfDocumentAction =
11 new QAction(tr("Go to Beginning of Document"), this);
12 goToBeginningOfDocumentAction->setShortcut(tr("Ctrl+Home"));
13 connect(goToBeginningOfDocumentAction, SlGNAL(activated()),
14 editor, SLOT(goToBeginningOfDocument());
15 …
16 }
Это позволяет легко добавлять команды в меню или в панель инструментов, что мы видели в главе 3. Если команды не отображаются в интерфейсе пользователя, объект
По умолчанию связывание клавиши в виджете, выполненное с использованием
Другим распространенным типом события является событие таймера. Если большинство других событий возникают в результате действий пользователя, то события таймера позволяют приложениям выполнять какую-то обработку через определенные интервалы времени. События таймера могут использоваться для реализации мигающих курсоров и другой анимации или просто для обновления экрана.
Для демонстрации событий таймера мы реализуем виджет
Ниже приводится заголовочный файл:
01 #ifndef TICKER_H
02 #define TICKER_H
03 #include
04 class Ticker : public QWidget
05 {
06 Q_OBJECT
07 Q_PROPERTY(QString text READ text WRITE setText)
08 public:
09 Ticker(QWidget *parent = 0);
10 void setText(const QString &newText);
11 QString text() const { return myText; }
12 QSize sizeHint() const;
13 protected:
14 void paintEvent(QPaintEvent *event);
15 void timerEvent(QTimerEvent *event);
16 void showEvent(QShowEvent *event);
17 void hideEvent(QHideEvent *event);
18 private:
19 QString myText;
20 int offset;
21 int myTimerId;
22 };
23 #endif
Мы переопределяем в
Теперь давайте рассмотрим реализацию:
01 #include
02 #include "ticker.h"