アットウィキロゴ

Qt Tips

class MyWidget : public QWidget
{
	Q_OBJECT
public:
	MyWidget( QWidget* parent = 0, const char* name = 0 );
	~MyWidget();

protected:
	virtual void	paintEvent( QPaintEvent* event );
};

.cppファイルをつくる

#include <QPainter.h>
#include "MyWidget.h"

MyWidget::MyWidget( QWidget* parent, const char* name )
: QWidget( parent, name )
{
}

MyWidget::~MyWidget()
{
}

void MyWidget::setProperty( const QString& key, int value )
{
	if ( key == "mRow" ) {
		mRow = value;
	} else if ( key == "mColumn" ) {
		mColumn = value;
	}
}

void MyWidget::paintEvent( QPaintEvent* event )
{
	QPainter p( this );
	p.drawLine( 0, 0, 100, 100 );
	...
}

designerで  Tools -> Custom -> Edit Custom Widgets...  New Widget、Class, Headerfile、Signals, Slots, Propertiesなどを設定する   PropertiesにmRow, mColumnをIntで追加する

Property  Tools -> Custom -> Edit Custom Widgets...  Propertesに追加  ???.cppのコンストラクタでsetProperty( "...", xxx );が呼ばれる  Widget側でpublic: void setProperty( const QString& key, int value );などを実装する

キーイベント  protected: virtual void keyPressEvent( QKeyEvent* event );をオーバーライド  矢印キーはevent->key()の値がQt::Key_Right, Qt::Key_Left, Qt::Key_Up, Qt::Key_Down

マウスイベント  protected:   virtual void mousePressEvent( QMouseEvent* event );    以後マウスを追跡するにはここでgrabMouse();   virtual void mouseReleaseEvent( QMouseEvent* event );    grabMouse()している場合はreleaseMouse()する   virtual void mouseMoveEvent( QMouseEvent* event );    ボタンを押している間しか発生しない

 マウスのローカル座標はevent->pos()

最終更新:2008年12月22日 13:59