Qt之QPainter:在窗口中繪製一條線

一、widget.h中:app

public:
    Widget(QWidget *parent = 0);
    ~Widget();
    void paintEvent(QPaintEvent *ev);
    void mousePressEvent(QMouseEvent *ev);
    void mouseMoveEvent(QMouseEvent *ev);
    void mouseReleaseEvent(QMouseEvent *ev);
    QVector<QPoint>_lines;

二、widget.cpp中this

#include <QPixmap>
#include <QMouseEvent>
void Widget::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    for(int i = 0; i < _lines.size() - 1; ++i){
        p.drawLine(_lines.at(i), _lines.at(i+1));
    }
}

void Widget::mouseMoveEvent(QMouseEvent *ev)
{
    _lines.append(ev->pos());
    update();
}
void Widget::mousePressEvent(QMouseEvent *ev)
{
     _lines.append(ev->pos());
}
void Widget::mouseReleaseEvent(QMouseEvent *ev)
{
     _lines.append(ev->pos());
}

相關文章
相關標籤/搜索