代码修改只显示修改的部分#ifndef SWITCHFORM_H#define SWITCHFORM_H#include QWidget#include QTimer#include QColornamespace Ui class SwitchForm;class SwitchForm public QWidget Q_OBJECTpublic explicit SwitchFor
以下是修改的部分代码:
void SwitchForm::drawSlider(QPainter *painter)
{
painter->save();
painter->setPen(Qt::NoPen);
QColor color = m_checked ? m_sliderColorOn : m_sliderColorOff;
painter->setBrush(QBrush(color));
int sliderWidth = qMin(width(), height()) - m_space * 2;
int sliderX = m_checked ? width() - sliderWidth - m_space : m_space; // 修改滑块的X轴坐标
QRect rect(sliderX, m_space, sliderWidth, sliderWidth);
painter->drawEllipse(rect);
painter->restore();
}
void SwitchForm::mousePressEvent(QMouseEvent *ev)
{
Q_UNUSED(ev)
m_checked = !m_checked;
emit statusChanged(m_checked);
// 计算步长
m_step = qAbs(m_endX - m_startX) / 10; // 修改步长的计算方式
// 判断是否使用动画
if (m_animation) {
m_timer->start();
} else {
m_startX = m_endX;
update();
}
}
这些修改将确保在设置setChecked(true)时,内部圆圈图形位于整个图形的右侧,而在设置setChecked(false)时,内部圆圈图形位于整个图形的左侧。
原文地址: https://www.cveoy.top/t/topic/iy4g 著作权归作者所有。请勿转载和采集!