当前位置:   article > 正文

qt 简单实验 画一个等边三角形_qt画等边三角形

qt画等边三角形

1.概要

2.代码

2.1 widget.h

 

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QPainter>
  5. QT_BEGIN_NAMESPACE
  6. namespace Ui {
  7. class Widget;
  8. }
  9. QT_END_NAMESPACE
  10. class Widget : public QWidget
  11. {
  12. Q_OBJECT
  13. public:
  14. Widget(QWidget *parent = nullptr);
  15. ~Widget();
  16. protected:
  17. void paintEvent(QPaintEvent *event);
  18. private:
  19. Ui::Widget *ui;
  20. };
  21. #endif // WIDGET_H

2.2 widget.cpp

 

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent)
  4. : QWidget(parent)
  5. , ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. }
  9. Widget::~Widget()
  10. {
  11. delete ui;
  12. }
  13. void Widget::paintEvent(QPaintEvent *event){
  14. QPainter painter(this);
  15. painter.setRenderHint(QPainter::Antialiasing);
  16. // 设置画笔颜色
  17. painter.setPen(Qt::black);
  18. // 设置画刷颜色(如果需要填充)
  19. painter.setBrush(Qt::lightGray);
  20. // 计算等边三角形的大小和位置
  21. int side = qMin(width(), height()) * 0.7; // 边长取窗口宽度和高度中较小值的70%
  22. int centerX = width() / 2;
  23. int centerY = height() / 2;
  24. // 计算等边三角形顶点的位置
  25. QPointF point1(centerX, centerY - side / 2.0 * sqrt(3.0) / 2.0);
  26. QPointF point2(centerX + side / 2.0, centerY + side / 2.0 * sqrt(3.0) / 2.0);
  27. QPointF point3(centerX - side / 2.0, centerY + side / 2.0 * sqrt(3.0) / 2.0);
  28. // 绘制等边三角形
  29. QPolygonF triangle;
  30. triangle << point1 << point2 << point3;
  31. painter.drawPolygon(triangle);
  32. }

2.3 main.cpp

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

3.运行结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/766388
推荐阅读
相关标签
  

闽ICP备14008679号