qt自定义控件-旋转风扇
Qt 自定义 控件 旋转 风扇
2023-09-27 14:29:08 时间
一、前言
使用过的控件汇总收集
二、环境
qt57
window10
三、正文
效果:就是使用一个风车图片,然后呜呜旋转,可调节旋转的速度,还有角度等参数
代码:
#include "circlewidget.h"
#include <QPainter>
#include <QTimer>
CircleWidget::CircleWidget(QWidget *parent):
QWidget(parent)
{
m_bg = QImage(":/PIC/icon/main_slices/fan.png");
m_pCircleTimer = new QTimer(this);
m_pCircleTimer->setInterval(50);
connect(m_pCircleTimer, &QTimer::timeout, this, &CircleWidget::onTimeout);
}
void CircleWidget::startCircle()
{
m_pCircleTimer->start();
}
void CircleWidget::stopCircle()
{
m_pCircleTimer->stop();
}
void CircleWidget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::NoBrush);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.translate(this->width() / 2, this->height() / 2); //设置旋转中心
painter.rotate(m_nAngle); //旋转
painter.translate(-(this->width() / 2), -(this->height() / 2)); //将原点复位
painter.drawImage(this->rect(), m_bg);
QWidget::paintEvent(e);
}
void CircleWidget::onTimeout()
{
if(m_nAngle == 360)
{
m_nAngle = 0;
}
m_nAngle += 15;
update();
}
#ifndef CIRCLEWIDGET_H
#define CIRCLEWIDGET_H
#include <QWidget>
class QTimer;
class CircleWidget : public QWidget
{
Q_OBJECT
public:
explicit CircleWidget(QWidget *parent = 0);
void startCircle();
void stopCircle();
protected:
void paintEvent(QPaintEvent *e);
private slots:
void onTimeout();
private:
QImage m_bg;
QTimer *m_pCircleTimer = Q_NULLPTR;
int m_nAngle = 0;
};
#endif // CIRCLEWIDGET_H
四、结语
相关文章
- Qt之自定义布局管理器(QBorderLayout)
- Qt之自定义布局管理器(QCardLayout)
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)
- Qt之QHeaderView自定义排序(QSortFilterProxyModel)
- Qt之自定义界面(实现无边框、可移动)
- 【Qt开发】QTableWidget设置根据内容调整列宽和行高
- 【Qt开发】QThread 实用技巧、误区----但文档中没有提到
- 编译x11版本qt
- PyQt(Python+Qt)学习随笔:QListView的uniformItemSizes属性
- PyQt(Python+Qt)学习随笔:QListView的viewMode属性
- PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox增加自定义按钮的方法
- 34.qt quick-Popup弹出窗口自定义
- 35.QT-多线程
- qt-简单的使用 QStyle 类
- qt自定义控件-圆形通用指示表盘
- Qt 自定义日志类
- Qt事件系统之三:键盘事件