Qt 实现橡皮筋线

 

/** rubberband.h
  * 孤舟钓客
  * 2011-07-25
  */

#ifndef RUBBERBAND_H
#define RUBBERBAND_H

#include <QtGui>

class QRubberBand;

class RubberBand : public QMainWindow
{
    Q_OBJECT
public:
    RubberBand(QWidget *parent = 0);

    void mousePressEvent(QMouseEvent *);    // event
    void mouseMoveEvent(QMouseEvent *);        // event
    void mouseReleaseEvent(QMouseEvent *);    // event

private:
    QRubberBand *rubberBand;
    QPoint origin;
};

#endif // RUBBERBAND_H

/** rubberband.cpp
  * 孤舟钓客
  * 2011-07-25
  */

#include "rubberband.h"

RubberBand::RubberBand(QWidget *parent)
    : QMainWindow(parent)
{
    QWidget *mainWidget = new QWidget;
    mainWidget->setBackgroundRole(QPalette::Light);
    mainWidget->setAutoFillBackground(true);
    setCentralWidget(mainWidget);

    resize(600, 400);
    setWindowTitle(tr("RubberBand"));
    rubberBand = NULL;
}

void RubberBand::mousePressEvent(QMouseEvent *e)
{
    origin = e->pos();
    if (!rubberBand)
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();
}

void RubberBand::mouseMoveEvent(QMouseEvent *e)
{
    if (rubberBand)
        rubberBand->setGeometry(QRect(origin, e->pos()).normalized());
}

void RubberBand::mouseReleaseEvent(QMouseEvent *e)
{
    if (rubberBand)
        rubberBand->hide();
}

 

/** main.cpp
  * 孤舟钓客
  * 2011-07-25
  */

#include <QApplication>
#include "rubberband.h"

int
main(int argc, char * argv[])
{
    QApplication app(argc,argv);

    QTranslator translator;
    translator.load("rubberband_zh");
    app.installTranslator(&translator);

    RubberBand rubber;
    rubber.show();
    return app.exec();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值