ホームに戻る
 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;
}

inserted by FC2 system