查看完整版本: [-- 在QWidget上用鼠标画方框 --]

QTCN开发网 -> Qt代码秀 -> 在QWidget上用鼠标画方框 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jdwx 2013-04-01 20:50

在QWidget上用鼠标画方框

如何在QWidget上用鼠标画方框
很简单,只是为初学者提供一个最基本的鼠标画图的例子,代码很少很容易看懂。
直接上代码,附件里有全部的代码下载,这里只显示主要的部分:
win7 + Qt5 + VS2010,编译运行。


  1. #ifndef WIDGET_H
    #define WIDGET_H
    #include <QWidget>


    namespace Ui {
    class Widget;
    }

    class Widget : public QWidget
    {
        Q_OBJECT
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    protected:
        void mousePressEvent(QMouseEvent *e);
        void mouseMoveEvent(QMouseEvent *e);
        void mouseReleaseEvent(QMouseEvent *e);
        void paintEvent(QPaintEvent *);
    private slots:

    private:
        Ui::Widget *ui;
        bool m_isDown;
        QPoint m_start;
        QPoint m_stop;
    };
    #endif // WIDGET_H
  1. #include "widget.h"
    #include "ui_widget.h"
    #include <QtWidgets>

    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
        m_isDown = false;
    }

    Widget::~Widget()
    {
        delete ui;
    }

    void Widget::mousePressEvent(QMouseEvent *e)
    {
        if(e->button() && Qt::LeftButton){
            m_isDown = true;
            m_start = e->pos();
            m_stop = e->pos();
        }
    }

    void Widget::mouseMoveEvent(QMouseEvent *e)
    {
        if(m_isDown){
            m_stop = e->pos();
        }
        update();
    }

    void Widget::mouseReleaseEvent(QMouseEvent *e)
    {
        if(e->button() && Qt::LeftButton){
            m_isDown = false;
        }
    }

    void Widget::paintEvent(QPaintEvent *)
    {  
        if(!m_isDown){
            return;
        }
        QPainter p(this);
        p.drawRect(QRect(m_start,m_stop));
    }


[attachment=10046]








xsjqqq123 2013-04-01 21:56
我觉得画箭头比较实用,可以用来做PPT

sunkg 2013-04-17 23:24
不错,谢谢

qusiba111qu 2013-04-26 18:16
xiexiefenxiang

neil-wen 2013-04-26 19:49
不错  ,值得学习

dqynet 2013-05-03 10:39
编译不过去

sinprog 2013-11-20 10:58
双缓冲绘图

shayueqing 2014-09-30 17:54

枪恋吧 2014-10-09 15:04
个最基本的鼠标画图的例子,代码很少很容易看懂。
直接上代码,附件里有全部的

shannon 2014-10-15 13:38
谢谢~

cizer 2015-05-24 13:58
谢谢分享

hjm1990818 2015-06-07 19:29
很好的例子,谢谢

stillelx 2015-07-29 22:55
代码简单明了,相当棒,学习了

z609932088 2015-11-10 09:24
学习了

yk910127 2017-09-08 09:18
学习中        

liulin188 2019-04-14 07:35


查看完整版本: [-- 在QWidget上用鼠标画方框 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled