当前位置:网站首页>Day11QPainter2021-09-26
Day11QPainter2021-09-26
2022-06-21 16:58:00 【晓晓暮雨潇潇】
QPainter–绘图操作
绘图系统中有QPainter完成具体的绘制操作,其中, 提供了大量高度优化的函数来完成GUI编程所需要的大部分绘制工作。QPainter可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以绘制文本和图片。
案例:使用QPainter绘制一个图片,并设置一个按钮,单击按钮,就会移动,超出屏幕范围就会重新到屏幕左侧。
使用步骤
1.添加头文件
#include <QPainter>
2.在.h文件中声明重绘函数
void paintEvent(QPaintEvent *);
3.在.cpp中重写重绘函数。重绘函数的注释中,写到了多种类提供的函数,绘制一些规则图形,方便大家直接使用。
void MainWindow::paintEvent(QPaintEvent *)//重写绘图函数
{
//声明画家对象 在窗口设备中绘制图片
QPainter painter(this);
if(posX>this->width())
{
posX=10;
}
painter.drawPixmap(posX,100,QPixmap(":/img/Day11.png"));//画一张图
// painter.drawEllipse(QPoint(100,100),50,50); //画圆
// painter.setRenderHint(QPainter::Antialiasing);//设置抗锯齿
// painter.drawEllipse(QPoint(250,100),50,50);//画椭圆
// painter.drawRect(QRect(20,20,50,50)); //画矩形
// painter.drawLine(QPoint(0,0),QPoint(100,100));//画线
// painter.drawText(QRect(10,200,100,100),"好好学习");//画文字
// painter.translate(QPoint(100,0));//移动画家
// painter.save();//保存画家状态
// 画笔
// QPen pen(QColor(255,0,0));//设置画笔
// pen.setWidth(2);//设置画笔粗细
// pen.setStyle(Qt::DotLine);//设置画笔风格
// painter.setPen(pen);//拿起这跟笔
// //画刷
// QBrush brush(Qt::cyan);//设置画刷颜色
// brush.setStyle(Qt::Dense1Pattern);//设置画刷风格
// painter.setBrush(brush);//让画家拿起画刷
}
4.调用update()函数触发重绘事件。绘图事件的重绘函数是一个虚函数,当调用update()函数时,会触发重绘事件,也就是如果用户重新定义了重绘函数,那么此时会调用这个函数。
在点击按钮信号对应的槽函数中调用update()函数
connect(ui->move_Btn,&QPushButton::clicked,[=](){
posX+=10;
//调用
update();
});
5.代码运行效果
边栏推荐
- TypeScript的一些基本特征
- 有了mitmdump还不赶紧扔掉Charles
- Typescript的构造方式
- EtherCAT igh master station controls Esther servo to return to zero
- RK3566调试GC2053
- AttributeError: module ‘cv2‘ has no attribute ‘gapi_ wip_ gst_ GStreamerPipeline‘
- 字节跳动提出轻量级高效新型网络MoCoViT,在分类、检测等CV任务上性能优于GhostNet、MobileNetV3!
- Differences between WCDMA and LTE
- WXML模板语法、WXSS模板样式、全局配置、页面配置和网络数据请求
- CANN训练营第二季-开营仪式 | 今晚七点半准时开播,不容错过!
猜你喜欢

Laravel实现软删除

AI自己写代码让智能体进化!OpenAI的大模型有“人类思想”那味了

是关于Linux中一步建立yum源缓存问题

TypeScript类对象的初始化

EtherCAT igh 'Fatal Sync Error'——0x002C,0x001A

How to create your own AI creativity?

怎么安装 Laravel

Initialization of typescript class objects

Gartner 网络研讨会 “九问数字化转型” 会后感

RMB 18billion, a super master fund was born in Suzhou
随机推荐
字節跳動提出輕量級高效新型網絡MoCoViT,在分類、檢測等CV任務上性能優於GhostNet、MobileNetV3!
Typescript interface
EtherCAT igh 'Fatal Sync Error'——0x002C,0x001A
Node输出方式
缓存型数据库Redis的配置与优化
markdown写作软件:Ulysses v27
如何使用 DATAX 以 UPSERT 语义更新下游 ORACLE 数据库中的数据
RMB 18billion, a super master fund was born in Suzhou
会议聊天室--开发文档
tcpserver开启多线程处理
论文解读(USIB)《Towards Explanation for Unsupervised Graph-Level Representation Learning》
Compound type of typescript
原码、补码、反码的关系
LeetCode 1108 IP地址无效化[暴力] HERODING的LeetCode之路
TypeScript的一些基本特征
Typescript的构造方式
国产API管理平台横向比较,到底哪家强?
Byte traffic business experience: realize as soon as possible, sew money bags, and sell all in goods
力扣141.环形链表
力扣239. 滑动窗口最大值