QT画图的一个简单问题

suxingtian 2018-01-21 03:56:28
QT 按照例子做的,
现象是 ,每次画的时候会把上次的结束点作为起点开始画。
估计是mouseMoveEvent事件有概率在mousePressEvent之前触发
试着增加一些标志判断,还是没搞好。。。
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
resize(600,500);
pix = QPixmap(200,200);
pix.fill(Qt::white);
isDrawing = false;
scale = 1;
pushBtn = new QPushButton(this);
pushBtn->setText(tr("zoomIn"));
pushBtn->move(500,450);
connect(pushBtn,SIGNAL(clicked()),this,SLOT(zoomIn()));
}

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

void Dialog::paintEvent(QPaintEvent *event)
{
QPainter pp(&pix);
pp.drawLine(lastPoint,endPoint);
lastPoint = endPoint;
QPainter painter(this);
painter.drawPixmap(0,0,pix);
}
void Dialog::mousePressEvent(QMouseEvent *event)
{
if(event->button()==Qt::LeftButton)
{
lastPoint = event->pos();
}
}
void Dialog::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons()&Qt::LeftButton)
{
endPoint = event->pos();
update();
}
}
void Dialog::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
endPoint = event->pos();
update();
}
}


//void Dialog::zoomIn()
//{
// scale *= 2;
// update();
//}
...全文
518 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
suxingtian 2018-01-23
  • 打赏
  • 举报
回复
我在win7下同样的代码没有问题。之前的是win10下搞的
赵4老师 2018-01-22
  • 打赏
  • 举报
回复
参考MFC CRectTracker

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧