【Qt之绘制兔纸】

效果

代码

cpp 复制代码
class drawRabbit: public QWidget {
public:
  drawRabbit(QWidget *parent = nullptr) : QWidget(parent) {}

private:
  void paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 绘制兔子的耳朵
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(50, 30, 40, 80));
    painter.drawEllipse(QRectF(140, 30, 40, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(52, 38, 36, 66));
    painter.drawEllipse(QRectF(142, 38, 36, 66));

    // 绘制兔子的脸
    painter.setBrush(QColor("#f7c2b7"));
    painter.drawEllipse(QRectF(70, 70, 100, 130));

    // 绘制兔子的眼睛
    painter.setPen(QPen(Qt::white, 4));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(90, 100, 30, 40));
    painter.drawEllipse(QRectF(130, 100, 30, 40));
    painter.setPen(QPen(Qt::black, 2));
    painter.setBrush(QColor("#000000"));
    painter.drawEllipse(QRectF(97, 110, 16, 22));
    painter.drawEllipse(QRectF(137, 110, 16, 22));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(103, 115, 5, 5));
    painter.drawEllipse(QRectF(143, 115, 5, 5));

    // 绘制兔子的嘴巴
    painter.setPen(QPen(QColor("#d95259"), 4));
    painter.setBrush(QColor("#d95259"));
    painter.drawEllipse(QRectF(100, 145, 60, 40));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(110, 150, 10, 10));
    painter.drawEllipse(QRectF(140, 150, 10, 10));

    // 绘制兔子的身体
    painter.setBrush(QColor("#f7c2b7"));
    painter.drawEllipse(QRectF(20, 200, 200, 150));

    // 绘制兔子的手臂
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(10, 210, 50, 80));
    painter.drawEllipse(QRectF(210, 210, 50, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(12, 218, 46, 66));
    painter.drawEllipse(QRectF(212, 218, 46, 66));

    // 绘制兔子的腿
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(60, 320, 50, 80));
    painter.drawEllipse(QRectF(140, 320, 50, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(62, 328, 46, 66));
    painter.drawEllipse(QRectF(142, 328, 46, 66));
  }
};

.main

cpp 复制代码
  QApplication app(argc, argv);

  drawRabbit ra;
  ra.resize(240, 400);
  ra.show();

  return app.exec();
相关推荐
kimnoic12 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
必须得开心呀13 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
沫璃染墨15 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子66615 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南16 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀16 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana216 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
临床数据科学和人工智能兴趣组17 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go17 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
geats人山人海17 小时前
java 4继承
java·开发语言