hakeの日記

Windows環境でプログラミングの勉強をしています。

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発生"));
}