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