C++でQTアプリ(その6) イベント処理
予め用意されているイベントに処理を追加。下のプログラムでは画面をペンでタップすると文字を表示する。
クラスQMultiLineEditを継承して新たにEditというクラスを作成、ここでmousePressEventの処理で“mousePressEvent発生”の文字を挿入するようにしている。ちなみにmousePressEventは、QMultiLineEditの継承を遡ってQWidgetにあるイベントである。ヘッダーファイルでの宣言にvirtualがくっついているのはリファレンスのProtected Membersで書かれていたのでそのとおりにした、理由は不明。
event.h
#ifndef EVENT_H #define EVENT_H #include <qmainwindow.h> #include <qmultilineedit.h> class Event : public QMainWindow{ Q_OBJECT public: Event(QWidget *parent = 0, const char *name = 0); // ~Event(); private: QMultiLineEdit *eb; }; class Edit : public QMultiLineEdit{ Q_OBJECT public: Edit(QWidget *parent = 0, const char *name = 0); // ~Edit(); protected: virtual void mousePressEvent( QMouseEvent * ); }; #endif
event.cpp
#include "event.h" Event::Event(QWidget *parent, const char *name) : QMainWindow(parent, name) { setCaption("Event Test"); eb = new Edit( this ); setCentralWidget( eb ); eb->clear(); } // QMultiLineEditを継承 Edit::Edit(QWidget *parent, const char *name) : QMultiLineEdit(parent, name) {} // 画面タップ時の処理 void Edit::mousePressEvent( QMouseEvent * ) { insertLine( tr("mousePressEvent発生")); }