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"
03 Ticker::Ticker(QWidget *parent)
04 : QWidget(parent)
05 {
06 offset = 0;
07 myTimerId = 0;
08 }
Конструктор инициализирует смещение
09 void Ticker::setText(const QString &newText)
10 {
11 myText = newText;
12 update;
13 updateGeometry;
14 }
Функция
15 QSizeTicker::sizeHint const
16 {
17 return fontMetrics.size(0, text);
18 }
Функция