• QT:绘图


    widget.h

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include //绘图事件
    5. class Widget : public QWidget
    6. {
    7. Q_OBJECT
    8. public:
    9. Widget(QWidget *parent = 0);
    10. ~Widget();
    11. void paintEvent(QPaintEvent *event); //重写绘图事件
    12. void timerEvent(QTimerEvent *event);
    13. private:
    14. int xPos; //x轴坐标
    15. };
    16. #endif // WIDGET_H

    widget.cpp

    1. #include "widget.h"
    2. #include //画家
    3. #include //画笔
    4. #include //画刷
    5. #include
    6. #include
    7. Widget::Widget(QWidget *parent)
    8. : QWidget(parent),xPos(0) //x轴坐标初始化为0
    9. {
    10. setWindowTitle("绘图");
    11. setFixedSize(1000,800);
    12. //QWidget自带一个定时器
    13. startTimer(1000);
    14. }
    15. Widget::~Widget()
    16. {
    17. }
    18. //重写绘图事件
    19. void Widget::paintEvent(QPaintEvent *event)
    20. {
    21. //将widget主窗口作为画布
    22. QPainter painter(this);
    23. //设置画笔颜色为蓝色
    24. QPen pen(QColor(0,0,255)); //三基色:红绿蓝
    25. //设置画笔的粗细
    26. pen.setWidth(2);
    27. //设置画笔风格:点线
    28. pen.setStyle(Qt::DotLine);
    29. //设置画刷颜色为红色:填充
    30. QBrush brush(QColor(255,0,0));
    31. //设置画刷风格
    32. brush.setStyle(Qt::Dense6Pattern);
    33. painter.setPen(pen);
    34. painter.setBrush(brush);
    35. //画一条线,起始x轴y轴,终点x轴y轴
    36. painter.drawLine(0,0,100,100);
    37. //画矩形,起始x轴y轴,宽200高100
    38. painter.drawRect(100,100,200,100);
    39. //画圆
    40. painter.drawEllipse(400,100,100,100);
    41. //画椭圆
    42. painter.drawEllipse(500,100,400,100);
    43. //画浮点数的点
    44. const QPointF points[4] = {
    45. QPointF(10.1,80.2),
    46. QPointF(20.1,10.5),
    47. QPointF(70.6,40.7),
    48. QPointF(90.2,100.6)
    49. };
    50. //画多边形,多个点连接
    51. painter.drawPolygon(points,4);
    52. //画图片
    53. painter.drawPixmap(xPos++*50,400,QPixmap(":/images/luffy.png"));
    54. if(xPos*50 > this->width()) //图片移动
    55. {
    56. xPos = 0;
    57. }
    58. }
    59. void Widget::timerEvent(QTimerEvent *event)
    60. {
    61. qDebug() << "超时事件";
    62. //手动刷新,让窗口重绘,产生绘图事件
    63. this->update();
    64. }

    mian.cpp

    1. #include "widget.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Widget w;
    7. w.show();
    8. return a.exec();
    9. }

    资源文件

    结果

  • 相关阅读:
    ALM研发管理中规则库的配置与使用
    pnpm为什么卸载卸载不干净
    抖音SEO源码
    C++之C++11字符串字面量后缀总结(二百四十八)
    文件操作【c语言】
    Jmeter介绍与使用
    springboot学习四:Spring Boot2.x 过滤器基础入门&实战项目场景实现
    【前端系列】前端如何使用websocket发送消息
    读周岭《认知觉醒》第一次有感
    Android开发的Handler消息机制解释
  • 原文地址:https://blog.csdn.net/cxy255256/article/details/133491220