ホームに戻る
Qt(描画編)
0、はじめに
マウスのクリックイベントと描画イベントを実装します。
具体的にはクリックすると楕円の向きを変えて再描画します。
1、ウィジェットのサブクラスを作る
「ファイル」→「ファイル/プロジェクトの新規作成」
「C++」→「C++ Class」→選択
クラス名を決める。 Widget2 とでもする。
基底クラスを QWidget とする→次へ→完了
基底クラスはキー入力でどんな名前でも入力可能。
widget2.h、widget2.cpp のファイルができる。
2、サブクラスのラベルを配置
mainwindow.ui を選択し「Widget」を貼る。
ラベル上で右クリックし「格上げ先を指定」
「格上げされたクラス名」に「Widget2」を書き→追加
「グローバルにインクルードする」にチェックをつけ→格上げ
これで QWidget を拡張した
サブクラスの Widget2 の widget を貼り付けたことになる。
3、コードを書く
// widget2.cpp
#ifndef WIDGET2_H
#define WIDGET2_H
#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
class Widget2 : public QWidget
{
Q_OBJECT
public:
explicit Widget2(QWidget *parent = 0);
private:
int flag;
signals:
public slots:
protected:
void paintEvent(QPaintEvent *){
QPainter qp(this);
if(flag == 0){
qp.drawEllipse(QPoint(50,50),30,20);
}
else{
qp.drawEllipse(QPoint(50,50),20,30);
}
}
void mousePressEvent(QMouseEvent * event){
int x = event->x();
int y = event->y();
flag = 1 - flag;
update();
}
};
#endif // WIDGET2_H
// widget2.cpp
#include "widget2.h"
Widget2::Widget2(QWidget *parent) :
QWidget(parent)
{
flag = 0;
}