技术专栏
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
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
浏览量:4782次2021-01-19 16:45:32
-
浏览量:648次2023-11-30 17:44:37
-
浏览量:1895次2024-03-04 14:01:52
-
浏览量:4978次2021-04-25 16:34:37
-
浏览量:939次2023-08-04 10:55:54
-
浏览量:1497次2023-04-14 10:20:01
-
浏览量:5105次2020-09-20 21:34:22
-
浏览量:3064次2017-11-28 12:33:29
-
浏览量:3824次2020-08-21 19:40:26
-
浏览量:2631次2019-12-05 16:39:49
-
浏览量:2463次2022-12-08 23:43:55
-
浏览量:1977次2020-08-22 16:10:10
-
浏览量:4502次2021-01-27 15:15:35
-
浏览量:645次2024-02-01 14:28:23
-
浏览量:3390次2020-08-18 20:09:59
-
浏览量:2403次2020-08-23 21:47:22
-
浏览量:3152次2020-09-20 22:17:04
-
浏览量:2682次2017-12-03 14:42:30
-
浏览量:3948次2020-10-10 15:51:00
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
小王子🤴
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注