技术专栏
Qt图片旋转
Qt图片旋转
开发过程中突然遇到有个按钮图标需要旋转的需求,就找了下实现旋转的实现方法,以下是实现的代码。
这里我继承了QAbstractButton类,重新绘制按钮的图片,在需要旋转的时候旋转
class spinButton : public QAbstractButton{
Q_OBJECT
public:
spinButton(QWidget *parent = nullptr);
void setIcons(QIcon ic);
void start();
void stop();
signals:
public slots:
void timeOut();
protected:
virtual void paintEvent(QPaintEvent *e);
private:
QPixmap Icon;
int angle = 0;
bool isRotate = false;
QTimer *timer = nullptr;
};
TreeWidgetEx::spinButton::spinButton(QWidget *parent) : QAbstractButton(parent)
{
Icon = QPixmap();
timer = new QTimer(this);
connect(tim,SIGNAL(timeout()),this,SLOT(timeOut()));
angle = 0;
}
void TreeWidgetEx::spinButton::setIcons(QIcon ic)
{
Icon = ic;
}
void TreeWidgetEx::spinButton::start()
{
angle = 0;
tim->start(20);
}
void TreeWidgetEx::spinButton::stop()
{
tim->stop();
angle = 0;
update();
}
void TreeWidgetEx::spinButton::timeOut()
{
angle += 20;
if(angle >= 360)
angle = 0;
update();
}
void TreeWidgetEx::spinButton::paintEvent(QPaintEvent *e)
{
Q_UNUSED(e)
QPainter paint(this);
paint.save();
paint.setRenderHints(QPainter::Antialiasing, true);
QPixmap pixmap = Icon.scaled(this->width()-10,this->height()-10,Qt::KeepAspectRatio, Qt::SmoothTransformation);
paint.rotate(angle);//坐标旋转
//经分析,应使图片中心,对应原点
paint.drawPixmap(-pixmap.width()/2,-pixmap.height()/2,pixmap);
paint.restore();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
<
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
1
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包

相关专栏
-
浏览量:4899次2021-01-19 16:45:32
-
浏览量:791次2023-11-30 17:44:37
-
浏览量:2623次2024-03-04 14:01:52
-
浏览量:5155次2021-04-25 16:34:37
-
浏览量:1074次2023-08-04 10:55:54
-
浏览量:1703次2023-04-14 10:20:01
-
浏览量:5198次2020-09-20 21:34:22
-
浏览量:3913次2020-08-21 19:40:26
-
浏览量:3199次2017-11-28 12:33:29
-
浏览量:2778次2019-12-05 16:39:49
-
浏览量:2632次2022-12-08 23:43:55
-
浏览量:2066次2020-08-22 16:10:10
-
浏览量:3524次2020-08-18 20:09:59
-
浏览量:4595次2021-01-27 15:15:35
-
浏览量:829次2024-02-01 14:28:23
-
浏览量:3909次2017-11-15 11:12:04
-
浏览量:4090次2020-10-10 15:51:00
-
浏览量:5380次2017-11-16 11:35:44
-
浏览量:8945次2020-11-12 21:51:54
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者

小王子🤴
您的支持将鼓励我继续创作!
打赏金额:
¥1

¥5

¥10

¥50

¥100

支付方式:

举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注