插件--旋钮插件jQuery knob

旋钮插件jQuery knob

插件描述:如果你也在寻找一款生成漂亮旋钮(knob)的jQuery插件的话,那么今天我们介绍的jQuery knob肯定是一个不错的选择。

如果你也在寻找一款生成漂亮旋钮(knob)的jQuery插件的话,那么今天我们介绍的jQuery knob肯定是一个不错的选择。它使用canvas帮助我们生成超酷的旋钮特效,你可以使用插件选项或者HTML5的data属性来自定义设置插件属性,方便简捷并且优雅,我相信大家肯定会喜欢这个超酷的jQuery插件,如果你有任何问题活着建议请给我们留言!

主要特性

支持只读模式

两个供选择的callback方法:change和release

支持自定义选项并且支持使用HTML5的data属性来配置插件选项

内建不同的主题

对于老的浏览器拥有不错的fallback机制

如何使用

导入jQuery和knob插件类库:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script src="js/jquery.knob-1.0.1.js"></script>

设定参数和callback方法:

$(".knob").knob({
    max: 940,
    min: 500,
    thickness: .3,
    fgColor: '#2B99E6',
    bgColor: '#303030',
    'release':function(e){
        $('#img').animate({width:e});
    }
});

当然,你也可以使用HTML5的标签属性来设置参数,如下:

<input class="knob2" data-width="150" data-fgColor="green" data-bgColor="#303030" data-skin="tron" data-thickness=".3" data-min="200" data-max="600" value="200">

HTML代码

<div id="knobwrapper">
    <input class="knob" data-width="300" data-skin="tron" data-displayInput="true" value="200">
    <div>
    <input class="knob2" data-width="150" data-fgColor="green" data-bgColor="#303030" data-skin="tron" data-thickness=".3" data-min="200" data-max="600" value="200">
    </div>
</div>

Javascript代码

$(function() {
    $(".knob").knob({
        max: 940,
        min: 500,
        thickness: .3,
        fgColor: '#2B99E6',
        bgColor: '#303030',
        'release':function(e){
            $('#img').animate({width:e});
        }
    });
    
    $(".knob2").knob({
        'release':function(e){
            $('#img').animate({width:e});
        }
    });
});

详解:

可如例子中在input中进行设置,加前缀data-

input中未进行的设置,可以在js里进行一一设置,类如最大、最小值,与value相对于,若value小于最小值,则旋转图标中心的文字以最小值为准。

thickness为圆圈的宽度

fgColor:前景色

bgColor:背景色

release:目前还不知主要的作用



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Qt 中,可以通过自定义绘制实现一个旋钮。以下是一个简单的例子: 1. 定义一个自定义旋钮控件类,继承自 QWidget。 2. 在控件类中定义旋钮的属性,如当前值、最小值、最大值、步长等。 3. 重写 paintEvent() 函数,在函数中使用 QPainter 绘制旋钮。 4. 重写 mousePressEvent() 和 mouseMoveEvent() 函数,实现旋钮的交互操作,如拖动旋钮改变值。 以下是一个简单的自定义旋钮控件的示例代码: ```cpp class Knob : public QWidget { Q_OBJECT public: explicit Knob(QWidget *parent = nullptr); void setValue(int value); int value() const; void setMinimum(int minimum); int minimum() const; void setMaximum(int maximum); int maximum() const; void setSingleStep(int step); int singleStep() const; signals: void valueChanged(int value); protected: void paintEvent(QPaintEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; private: int m_value; int m_minimum; int m_maximum; int m_singleStep; QPoint m_center; int m_radius; int m_angle; }; Knob::Knob(QWidget *parent) : QWidget(parent) , m_value(0) , m_minimum(0) , m_maximum(100) , m_singleStep(1) , m_center(width() / 2, height() / 2) , m_radius(qMin(width(), height()) / 2 - 10) , m_angle(0) { setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); } void Knob::setValue(int value) { if (value < m_minimum) value = m_minimum; if (value > m_maximum) value = m_maximum; if (value != m_value) { m_value = value; emit valueChanged(m_value); update(); } } int Knob::value() const { return m_value; } void Knob::setMinimum(int minimum) { m_minimum = minimum; } int Knob::minimum() const { return m_minimum; } void Knob::setMaximum(int maximum) { m_maximum = maximum; } int Knob::maximum() const { return m_maximum; } void Knob::setSingleStep(int step) { m_singleStep = step; } int Knob::singleStep() const { return m_singleStep; } void Knob::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); // 绘制外圆 painter.save(); painter.translate(m_center); painter.setPen(QPen(Qt::black, 2)); painter.drawEllipse(QPoint(0, 0), m_radius, m_radius); painter.restore(); // 绘制刻度线 painter.save(); painter.translate(m_center); painter.rotate(-120); for (int i = 0; i <= 20; ++i) { if (i % 2 == 0) { painter.drawLine(0, m_radius - 10, 0, m_radius - 20); painter.drawText(-10, m_radius - 22, QString::number(i * 5)); } else { painter.drawLine(0, m_radius - 15, 0, m_radius - 20); } painter.rotate(6); } painter.restore(); // 绘制指针 painter.save(); painter.translate(m_center); painter.rotate(-120 + m_angle); painter.setPen(QPen(Qt::red, 3)); painter.drawLine(0, 0, m_radius - 30, 0); painter.restore(); } void Knob::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_center = QPoint(width() / 2, height() / 2); m_radius = qMin(width(), height()) / 2 - 10; m_angle = qRound(qRadiansToDegrees(qAtan2(event->y() - m_center.y(), event->x() - m_center.x()))); } } void Knob::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton) { int newAngle = qRound(qRadiansToDegrees(qAtan2(event->y() - m_center.y(), event->x() - m_center.x()))); int delta = newAngle - m_angle; if (delta > 180) delta -= 360; if (delta < -180) delta += 360; setValue(m_value + delta / 2); m_angle = newAngle; } } ``` 在使用时,可以像使用其他控件一样添加到窗口中,并连接 valueChanged() 信号以处理旋钮的值改变事件。 ```cpp Knob *knob = new Knob(this); knob->setGeometry(50, 50, 100, 100); connect(knob, &Knob::valueChanged, [=](int value) { qDebug() << "value: " << value; }); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值