qt的帮助文档,qt解决utf8中文乱码
1.圆角矩形bug描述:Qt使用样式表Border0-radius: height/2时,显示宽度小于高度的一半时会显示为普通矩形,不符合圆角矩形的要求这个问题是Qt的bug,目前还没有修复问题的本质原因是,进度变了,宽度也变了,样式表在某个时间会失效有一种基于实时绘图的方法可以解决这个问题
1.1圆角矩形的bug图案预览:当进度值小于进度条高度的一半时,会出现一个方形的矩形边缘
1.2解决方法首先在表单上放置一个框架,将框架的样式和背景色设置为进度条的背景色,然后开始在框架上绘制进度的前景色,并将绘制路径设置为圆角矩形,这样就不会出现有方角的矩形边框
2核心代码2.1绘制进度条的背景色在Frame中绘制背景色并设置圆角代码如下所示
void Progress:paint event(QPaintEvent * event){ Q _ UNUSED(event);//备案,不报警告q painter Paint(this);//将当前绘图设备设置为当前表单paint . save();paint . set brush(q color( # 5f 5d 5d ));//设置进度的背景色paint . Set pen(Qt:no pen);paint . draw roundedrect(this-rect(),44,44);//绘制背景,一个圆角矩形,宽度与当前窗体高度一致需要设置当前窗体的背景透明paint . restore();}2.2绘制前景色void paint字体颜色(q painter paint){ paint . save();paint . set pen(Qt:no pen);//Set no brush,no contour paint . setrenderhints(q painter:text抗锯齿 qpainter:抗锯齿);//为文本和绘图设置抗锯齿paint . set brush(q color( # 009 b4c );//设置前景色QPainterPath paintPath//声明一个绘制路径paint path . addresdedrect(this-rect(),44,44);//添加44为Paint.setClipPath(paintPath)高度一半的圆角矩形;//设置绘制时的剪切路径,使圆角矩形以外的东西不会被绘制Qrect (Qrect (0,0,MValue,88));//mValue是当前进度值paint . drawrect(rect);//绘制前景paint . restore();}2.3绘制进度文本void paint text(q painter paint){ paint . save();paint . set brush(q color( # FFFFFF );//设置文本颜色paint.setfont (qfont (arial ,25,50));//设置字体类型和字号paint . drawtext(qpointf(this-width()/2-30,55),qstring (%1% )arg(mvalue/10));//定位绘制的定位矩形,绘制文本paint . restore();}3.bug解决后的进度栏预览
4.小知识分享在QtCreator中使用Ctrl Tab组合键可以在多个Cpp文件之间快速切换通过在uidesigner中右键单击当前类,可以将当前类升级为自定义类,并直接在uidesigner中使用它这样,当两个对象通信时,可以通过ui- xxx直接访问对象属性,点击当前小部件当手指移出零件时,焦点不会自动切换这时候鼠标移动了,但是事件处理还在部分,所以移出的时候需要忽略事件响应可以操作if (mframe-rect()包含(event-pos()){//xxxxx
XXXX}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。