Qtでお絵描きアプリを作ってみました。
内容は以下になります。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPixmap>
#include <QMouseEvent>
#include <QPainter>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void paintEvent(QPaintEvent *event) override;
private:
QPixmap canvas;
QPoint lastPoint;
bool drawing;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), drawing(false)
{
resize(800, 600);
canvas = QPixmap(size());
canvas.fill(Qt::white);
}
MainWindow::~MainWindow()
{
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
drawing = true;
lastPoint = event->pos();
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if (drawing && (event->buttons() & Qt::LeftButton)) {
QPainter painter(&canvas);
painter.setPen(QPen(Qt::black, 2, Qt::SolidLine, Qt::RoundCap));
painter.drawLine(lastPoint, event->pos());
lastPoint = event->pos();
update(); // paintEventを呼び出す
}
}
void MainWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0, 0, canvas);
}
↓↓↓youtube
https://youtu.be/NhBdVDPiexs