用QT编写一个简单的鼠绘程序,只要求能画出线条,该怎么实现程序对鼠标动作的响应呢?

 我来答
Joshion2008
2013-07-11 · TA获得超过152个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:132万
展开全部
#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QtGui>
#include <QMouseEvent>

class MyWidget : public QWidget
{
public:
    MyWidget();
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent *event);

private:
    QPoint m_PointStart;
    QPoint m_PointEnd;
};

#endif // MYWIDGET_H
#include <QtGui/QApplication>
#include "mainwindow.h"

#include "mywidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget widget;
    widget.show();

    return a.exec();
}
#include "mywidget.h"

MyWidget::MyWidget()
{
    resize(240,320);
}

void MyWidget::mousePressEvent(QMouseEvent *event)
{
    m_PointStart = event->pos();

}

void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
    //m_PointEnd = event->pos();
   //update();
}

void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
    m_PointEnd = event->pos();
    update();
}

void MyWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setBrush(QBrush(QColor(255,0,0)));
    painter.drawPixmap(0,0,240,320,QPixmap("images/frame1.jpg"));

    if(m_PointStart.x() < m_PointEnd.x())
        painter.drawPixmap(0,0,240,320,QPixmap("images/frame2.jpg"));
    else if(m_PointStart.x() > m_PointEnd.x())
        painter.drawPixmap(0,0,240,320,QPixmap("images/frame3.jpg"));

}

在网上找到了一个很好的类子,一看就明白


转自:http://www.cppblog.com/qianqian/archive/2012/05/21/121418.html

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式