Qt自绘之旋转八卦图

Qt自绘之旋转八卦图_第1张图片

#pragma once
#include 
#include 
#include 
#include 
#include 

class Widget : public QWidget {
public:
	Widget(QWidget *parent = nullptr) : QWidget(parent) {
		setFixedSize(400, 400);
		setWindowTitle("八卦图");
		timer = new QTimer(this);
		connect(timer, &QTimer::timeout, this, &Widget::updateAngle);
		timer->start(1);
		angle = 0;
	}

protected:
	void paintEvent(QPaintEvent *) override {
		QPainter painter(this);
		painter.setRenderHint(QPainter::Antialiasing);
		painter.translate(width() / 2, height() / 2);
		painter.rotate(angle);

		// 绘制圆形
		painter.setBrush(Qt::white);
		painter.drawEllipse(-100, -100, 200, 200);

		// 绘制上半部分
		painter.setBrush(Qt::black);
		painter.drawChord(-100, -100, 200, 200, 90 * 16, 180 * 16);
		painter.setBrush(Qt::white);
		painter.save();
		QPen pen(Qt::white);
		painter.setPen(pen);
		painter.drawEllipse(-50, -100, 100, 100);
		painter.restore();
		painter.setBrush(Qt::black);
		painter.drawEllipse(-10, -60, 20, 20);
		//painter.setBrush(Qt::black);
		//painter.drawChord(-50, 0, 100, 100, 270 * 16, 180 * 16);

		// 绘制下半部分
		//painter.setBrush(Qt::white);
		//painter.drawChord(-100, 0, 200, 200, 270 * 16, 180 * 16);
		painter.setBrush(Qt::black);
		painter.drawEllipse(-50, 0, 100, 100);
		//painter.setBrush(Qt::white);
		//painter.drawChord(-50, -100, 100, 100, 90 * 16, 180 * 16);
		painter.setBrush(Qt::white);
		painter.drawEllipse(-10, 40, 20, 20);
	}

private:
	void updateAngle() {
		angle += 1;
		if (angle >= 360) {
			angle = 0;
		}
		update();
	}

	QTimer *timer;
	int angle;
};


你可能感兴趣的:(Qt,qt,开发语言)