QT自定义扫描控件,支持任意方位拖动和拖动扫描范围。
- 开源代码
- 2025-08-31 01:45:01

部分代码:
void FishControlForm::paintEvent(QPaintEvent *event) { QPainter p(this); p.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform); p.translate(m_centerPoint); //bg p.setPen(Qt::white); p.drawEllipse(-m_radius,-m_radius,m_radius*2,m_radius*2); if (!m_state){ p.save(); p.rotate(-m_dropAngle); //扇形区域 QRadialGradient Radial(0,0,m_radius,0,0); //设置圆的原点和焦点在中心 Radial.setColorAt(0,QColor("#ccffffff")); Radial.setColorAt(1,QColor("#00ffffff")); p.setBrush(Radial); p.setPen(Qt::NoPen); p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,80*16,MinFishScanAngle*16); p.setBrush(Qt::NoBrush); p.restore(); p.setPen(Qt::white); p.drawEllipse(getDropRect()); } else{ if (m_rtShow){ p.save(); p.rotate(-m_dropAngleRt); p.save(); p.rotate(16); if (!m_lfShow){ p.setBrush(QBrush(QColor("#70ffffff"))); p.drawEllipse(-46,-210,93,12); } else{ p.setBrush(QBrush(QColor("#70777777"))); p.drawEllipse(-46,-210,93,12); } p.restore(); p.restore(); p.setPen(Qt::white); p.drawEllipse(getDropRect2()); } if (m_lfShow){ p.save(); p.rotate(-m_dropAngleLf); p.save(); p.rotate(-16); if (!m_rtShow){ p.setBrush(QBrush(QColor("#70ffffff"))); p.drawEllipse(-46,-210,93,12); } else{ p.setBrush(QBrush(QColor("#70777777"))); p.drawEllipse(-46,-210,93,12); } p.restore(); p.restore(); p.setPen(Qt::white); p.drawEllipse(getDropRect3()); } //扇形区域 QRadialGradient Radial(0,0,m_radius,0,0); //设置圆的原点和焦点在中心 Radial.setColorAt(0,QColor("#ccffffff")); Radial.setColorAt(1,QColor("#00ffffff")); p.setBrush(Radial); p.setPen(Qt::NoPen); int angle = (-m_dropAngleRt+m_dropAngleLf+MinFishScanAngle)%360; if (angle < 0) angle = 360 + angle; p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,(m_dropAngleRt+80)*16,angle*16); //自动扫描扇形 p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,(m_scanAngle+80)*16,20*16); } }源码
QT自定义扫描控件,支持任意方位拖动和拖动扫描范围。由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“QT自定义扫描控件,支持任意方位拖动和拖动扫描范围。”