vscode拖拽条看不清配色修改

插入这部分

"workbench.colorCustomizations": {
        "scrollbarSlider.background": "#bba76d",
        "scrollbarSlider.hoverBackground": "#cfb56a",
        "scrollbarSlider.activeBackground": "#fbdd86"
    }

在这里插入图片描述

效果展示

非常清晰!!!
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您不想通过继承`QSlider`来自定义拖动,可以通过继承`QWidget`并使用`QPainter`类来手动绘制。具体步骤如下: 1. 创建一个继承自`QWidget`的类,例如`CustomSlider`。 2. 在`CustomSlider`的构造函数中设置一些必要的属性,例如拖动的最小值、最大值和当前值。 3. 重写`paintEvent`函数,在该函数中使用`QPainter`类来手动绘制拖动。 4. 重写`mousePressEvent`和`mouseMoveEvent`函数,以便用户可以通过鼠标拖动手柄来改变当前值。 以下是一个示例实现: ```cpp class CustomSlider : public QWidget { Q_OBJECT public: CustomSlider(QWidget *parent = nullptr) : QWidget(parent), m_minValue(0), m_maxValue(100), m_currentValue(50) {} void setRange(int minValue, int maxValue) { m_minValue = minValue; m_maxValue = maxValue; update(); } void setValue(int value) { m_currentValue = qBound(m_minValue, value, m_maxValue); update(); } protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 绘制滑轨 QRectF trackRect(0, height() / 2 - 2, width(), 4); painter.setPen(QPen(Qt::gray, 4)); painter.drawLine(trackRect.topLeft(), trackRect.topRight()); // 绘制已选择的部分 QRectF selectedRect(0, height() / 2 - 2, width() * (m_currentValue - m_minValue) / (m_maxValue - m_minValue), 4); painter.setPen(QPen(Qt::blue, 4)); painter.drawLine(selectedRect.topLeft(), selectedRect.topRight()); // 绘制手柄 QRectF handleRect(selectedRect.right() - 8, height() / 2 - 12, 16, 24); painter.setPen(Qt::NoPen); painter.setBrush(Qt::white); painter.drawEllipse(handleRect); painter.setBrush(Qt::gray); painter.drawEllipse(handleRect.adjusted(2, 2, -2, -2)); } void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { setValue(m_minValue + (m_maxValue - m_minValue) * event->pos().x() / width()); event->accept(); } else { event->ignore(); } } void mouseMoveEvent(QMouseEvent *event) override { if (event->buttons() & Qt::LeftButton) { setValue(m_minValue + (m_maxValue - m_minValue) * event->pos().x() / width()); event->accept(); } else { event->ignore(); } } private: int m_minValue; int m_maxValue; int m_currentValue; }; ``` 在上面的示例中,我们通过重写`paintEvent`函数来手动绘制滑轨、已选择的部分和手柄。然后,在`mousePressEvent`和`mouseMoveEvent`函数中处理鼠标事件,以便用户可以通过鼠标拖动手柄来改变当前值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值