Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402755
  • 博文数量: 62
  • 博客积分: 1483
  • 博客等级: 上尉
  • 技术积分: 779
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-24 12:25
文章分类

全部博文(62)

文章存档

2012年(2)

2011年(6)

2010年(6)

2009年(48)

我的朋友

分类: LINUX

2009-11-29 17:20:18

#include
#include
#include
#include
#include
#include

const int MAXPOINTS = 2000;
const int MAXCOLORS = 40;

class ConnectWidget:public QWidget
{
  public:
    ConnectWidget(QWidget *parent = 0, const char *name= 0);
    ~ConnectWidget();
  protected:
    void paintEvent(QPaintEvent *);
    void mousePressEvent(QMouseEvent *);
    void mouseReleaseEvent(QMouseEvent *);
    void mouseMoveEvent(QMouseEvent *);
  private:
    QPoint *points;
    QColor *colors;
    int count;
    bool down;
};

ConnectWidget::ConnectWidget(QWidget *parent, const char *name)
:QWidget(parent,name) 
{
  setBackgroundColor(white); //还可以设置背景色
  count = 0;
  down = FALSE;
  points = new QPoint[MAXPOINTS];
  colors = new QColor[MAXCOLORS];
  for (int i = 0 ; i    colors[i] = QColor(rand()&255, rand()&255, rand()&255);
}

ConnectWidget::~ConnectWidget()
{
  delete[] points;
  delete[] colors;
}

void ConnectWidget::paintEvent(QPaintEvent* )
{
    QPainter paint(this);
    paint.setPen(colors[rand()%MAXCOLORS]);
    for (int j= 0;j<(count-1);j++){
      paint.drawLine(points[j], points[j+1]);
    }
}

void ConnectWidget::mousePressEvent(QMouseEvent *)
{
  down = TRUE;
  count = 0 ; //注释这个句子将会记忆所有的小于MAXPOINTS的路径,但是会弄成连笔
  erase(); //这个是qwidget类的public成员函数,他会清除这个qwidget(根据标志)。
}

void ConnectWidget::mouseReleaseEvent(QMouseEvent *)
{
  down = FALSE;
  update();  //这个是qwidget类的Public Slots槽。
                //Updating the widget will erase the widget contents and
                //generate an appropriate paint event for the invalidated region.
}

void ConnectWidget::mouseMoveEvent(QMouseEvent *e)
{
  if (down&&(count    QPainter paint(this);
    points[count++] = e->pos();
    paint.drawPoint(e->pos());
  }
}

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  ConnectWidget connect;
//  a.setMainWidget(&connect); //不要这个句子也可以运行
  connect.show();
  return a.exec();
}

阅读(4576) | 评论(0) | 转发(0) |
0

上一篇:测试pwm的qt代码

下一篇:qt的按键代码

给主人留下些什么吧!~~