Qt--在Label上画矩形

爱被打了一巴掌 2023-07-12 03:36 136阅读 0赞

1、实现方法:

需要继承QLabel并重写以下函数实现:

  1. void mousePressEvent(QMouseEvent *ev);
  2. void mouseMoveEvent(QMouseEvent *ev);
  3. void mouseReleaseEvent(QMouseEvent *ev);
  4. void paintEvent(QPaintEvent *);

2、源代码如下:

mylabel.h

  1. #ifndef MYLABEL_H
  2. #define MYLABEL_H
  3. #include <QLabel>
  4. #include <QMouseEvent>
  5. #include <QDebug>
  6. #include <QPaintEvent>
  7. #include <QPainter>
  8. class MyLabel : public QLabel
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit MyLabel(QWidget *parent = 0);
  13. protected:
  14. void mousePressEvent(QMouseEvent *ev);
  15. void mouseMoveEvent(QMouseEvent *ev);
  16. void mouseReleaseEvent(QMouseEvent *ev);
  17. void paintEvent(QPaintEvent *);
  18. private:
  19. int x1;
  20. int x2;
  21. int y1;
  22. int y2;
  23. };
  24. #endif // MYLABEL_H

mylabel.cpp

  1. #include "mylabel.h"
  2. MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
  3. {
  4. }
  5. void MyLabel::paintEvent(QPaintEvent *)
  6. {
  7. QPainter painter(this);
  8. painter.setPen(QPen(Qt::red, 2));
  9. painter.drawRect(QRect(x1, y1, x2 - x1, y2 - y1));
  10. }
  11. void MyLabel::mousePressEvent(QMouseEvent *ev)
  12. {
  13. x1 = ev->x();
  14. y1 = ev->y();
  15. }
  16. void MyLabel::mouseMoveEvent(QMouseEvent *ev)
  17. {
  18. x2 = ev->x();
  19. y2 = ev->y();
  20. update();
  21. }
  22. void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
  23. {
  24. }

3、效果
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读

    相关 42:矩形

    总时间限制: 1000ms 内存限制: 65536kB 描述 根据参数,画出矩形。 输入 输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于