以下是修改后的代码部分:

void SwitchForm::paintEvent(QPaintEvent *ev)
{
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    // 绘制背景
    drawBackGround(&painter);

    // 绘制滑块
    drawSlider(&painter);
}

void SwitchForm::mousePressEvent(QMouseEvent *ev)
{
    Q_UNUSED(ev)

    m_checked = !m_checked;
    emit statusChanged(m_checked);

    // 计算步长
    m_step = width() / 10;

    // 计算滑块X轴终点坐标
    if (m_checked) {
        m_endX = width() - height();
    } else {
        m_endX = 0;
    }

    // 判断是否使用动画
    if (m_animation) {
        m_timer->start();
    } else {
        m_startX = m_endX;
        update();
    }
}

void SwitchForm::updateValue()
{
    if (m_checked) {
        if (m_startX < m_endX) {
            m_startX += m_step;
        } else {
            m_startX = m_endX;
            m_timer->stop();
        }
    } else {
        if (m_startX > m_endX) {
            m_startX -= m_step;
        } else {
            m_startX = m_endX;
            m_timer->stop();
        }
    }

    update();
}

paintEvent函数中,只保留绘制背景和滑块的代码。在mousePressEvent函数中,只保留切换状态的代码和动画相关的代码。updateValue函数中只保留滑块位置更新的代码。

这样修改后,只显示了修改后的部分代码。

代码修改只显示修改后的部分#ifndef SWITCHFORM_H#define SWITCHFORM_H#include QWidget#include QTimer#include QColornamespace Ui class SwitchForm;class SwitchForm public QWidget Q_OBJECTpublic explicit SwitchFo

原文地址: https://www.cveoy.top/t/topic/iy4b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录