⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qslider.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        mySlider->setObjectName(name);    \endcode*/QSlider::QSlider(Qt::Orientation orientation, QWidget *parent, const char *name)    : QAbstractSlider(*new QSliderPrivate, parent){    setObjectName(QString::fromAscii(name));    d_func()->orientation = orientation;    d_func()->init();}/*!    Use QSlider(), QObject::setObjectName() and the functionality    inherited from QAbstractSlider instead.    \oldcode        QSlider *mySlider = new QSlider(minValue, maxValue, pageStep,                                        value, orientation, parent, name);    \newcode        QSlider *mySlider = new QSlider(orientation, parent);        mySlider->setObjectName(name);        mySlider->setMinimum(minValue);        mySlider->setMaximum(maxValue);        mySlider->setPageStep(pageStep);        mySlider->setValue(value);    \endcode*/QSlider::QSlider(int minValue, int maxValue, int pageStep, int value, Qt::Orientation orientation,                 QWidget *parent, const char *name)    : QAbstractSlider(*new QSliderPrivate, parent){    Q_D(QSlider);    setObjectName(QString::fromAscii(name));    d->minimum = minValue;    d->maximum = maxValue;    d->pageStep = pageStep;    d->position = d->value = value;    d->orientation = orientation;    d->init();}#endif/*!    Destroys this slider.*/QSlider::~QSlider(){}/*!    \reimp*/void QSlider::paintEvent(QPaintEvent *){    Q_D(QSlider);    QPainter p(this);    QStyleOptionSlider opt;    initStyleOption(&opt);    opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;    if (d->tickPosition != NoTicks)        opt.subControls |= QStyle::SC_SliderTickmarks;    if (d->pressedControl) {        opt.activeSubControls = d->pressedControl;        opt.state |= QStyle::State_Sunken;    } else {        opt.activeSubControls = d->hoverControl;    }    style()->drawComplexControl(QStyle::CC_Slider, &opt, &p, this);}/*!    \reimp*/bool QSlider::event(QEvent *event){    Q_D(QSlider);    switch(event->type()) {    case QEvent::HoverEnter:    case QEvent::HoverLeave:    case QEvent::HoverMove:        if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event))            d->updateHoverControl(he->pos());        break;    case QEvent::StyleChange:    case QEvent::MacSizeChange:        d->resetLayoutItemMargins();        break;    default:        break;    }    return QAbstractSlider::event(event);}/*!    \reimp*/void QSlider::mousePressEvent(QMouseEvent *ev){    Q_D(QSlider);    if (d->maximum == d->minimum || (ev->buttons() ^ ev->button())) {        ev->ignore();        return;    }#ifdef QT_KEYPAD_NAVIGATION    if (QApplication::keypadNavigationEnabled())        setEditFocus(true);#endif    ev->accept();    if ((ev->button() & style()->styleHint(QStyle::SH_Slider_AbsoluteSetButtons)) == ev->button()) {        QStyleOptionSlider opt;        initStyleOption(&opt);        const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);        const QPoint center = sliderRect.center() - sliderRect.topLeft();        // to take half of the slider off for the setSliderPosition call we use the center - topLeft        setSliderPosition(d->pixelPosToRangeValue(d->pick(ev->pos() - center)));        triggerAction(SliderMove);        setRepeatAction(SliderNoAction);        d->pressedControl = QStyle::SC_SliderHandle;        update();    } else if ((ev->button() & style()->styleHint(QStyle::SH_Slider_PageSetButtons)) == ev->button()) {        QStyleOptionSlider opt;        initStyleOption(&opt);        d->pressedControl = style()->hitTestComplexControl(QStyle::CC_Slider,                                                           &opt, ev->pos(), this);        SliderAction action = SliderNoAction;        if (d->pressedControl == QStyle::SC_SliderGroove) {            const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);            int pressValue = d->pixelPosToRangeValue(d->pick(ev->pos() - sliderRect.center() + sliderRect.topLeft()));            d->pressValue = pressValue;            if (pressValue > d->value)                action = SliderPageStepAdd;            else if (pressValue < d->value)                action = SliderPageStepSub;            if (action) {                triggerAction(action);                setRepeatAction(action);            }        }    } else {        ev->ignore();        return;    }    if (d->pressedControl == QStyle::SC_SliderHandle) {        QStyleOptionSlider opt;        initStyleOption(&opt);        setRepeatAction(SliderNoAction);        QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);        d->clickOffset = d->pick(ev->pos() - sr.topLeft());        d->snapBackPosition = d->position;        update(sr);        setSliderDown(true);    }}/*!    \reimp*/void QSlider::mouseMoveEvent(QMouseEvent *ev){    Q_D(QSlider);    if (d->pressedControl != QStyle::SC_SliderHandle) {        ev->ignore();        return;    }    ev->accept();    int newPosition = d->pixelPosToRangeValue(d->pick(ev->pos()) - d->clickOffset);    QStyleOptionSlider opt;    initStyleOption(&opt);    int m = style()->pixelMetric(QStyle::PM_MaximumDragDistance, &opt, this);    if (m >= 0) {        QRect r = rect();        r.adjust(-m, -m, m, m);        if (!r.contains(ev->pos())) {            newPosition = d->snapBackPosition;    }    }    setSliderPosition(newPosition);}/*!    \reimp*/void QSlider::mouseReleaseEvent(QMouseEvent *ev){    Q_D(QSlider);    if (d->pressedControl == QStyle::SC_None || ev->buttons()) {        ev->ignore();        return;    }    ev->accept();    QStyle::SubControl oldPressed = QStyle::SubControl(d->pressedControl);    d->pressedControl = QStyle::SC_None;    setRepeatAction(SliderNoAction);    if (oldPressed == QStyle::SC_SliderHandle)        setSliderDown(false);    QStyleOptionSlider opt;    initStyleOption(&opt);    opt.subControls = oldPressed;    update(style()->subControlRect(QStyle::CC_Slider, &opt, oldPressed, this));}/*!    \reimp*/QSize QSlider::sizeHint() const{    Q_D(const QSlider);    ensurePolished();    const int SliderLength = 84, TickSpace = 5;    QStyleOptionSlider opt;    initStyleOption(&opt);    int thick = style()->pixelMetric(QStyle::PM_SliderThickness, &opt, this);    if (d->tickPosition & TicksAbove)        thick += TickSpace;    if (d->tickPosition & TicksBelow)        thick += TickSpace;    int w = thick, h = SliderLength;    if (d->orientation == Qt::Horizontal) {        w = SliderLength;        h = thick;    }    return style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut());}/*!    \reimp*/QSize QSlider::minimumSizeHint() const{    Q_D(const QSlider);    QSize s = sizeHint();    QStyleOptionSlider opt;    initStyleOption(&opt);    int length = style()->pixelMetric(QStyle::PM_SliderLength, &opt, this);    if (d->orientation == Qt::Horizontal)        s.setWidth(length);    else        s.setHeight(length);    return s;}/*!    \property QSlider::tickPosition    \brief the tickmark position for this slider    The valid values are described by the QSlider::TickPosition enum.    The default value is \l QSlider::NoTicks.    \sa tickInterval*/void QSlider::setTickPosition(TickPosition position){    Q_D(QSlider);    d->tickPosition = position;    d->resetLayoutItemMargins();    update();    updateGeometry();}QSlider::TickPosition QSlider::tickPosition() const{    return d_func()->tickPosition;}/*!    \fn TickPosition QSlider::tickmarks() const    \compat    Use tickPosition() instead.*//*!    \fn QSlider::setTickmarks(TickPosition position)    \compat    Use setTickPosition() instead.*//*!    \property QSlider::tickInterval    \brief the interval between tickmarks    This is a value interval, not a pixel interval. If it is 0, the    slider will choose between lineStep() and pageStep().    The default value is 0.    \sa tickPosition, lineStep(), pageStep()*/void QSlider::setTickInterval(int ts){    d_func()->tickInterval = qMax(0, ts);    update();}int QSlider::tickInterval() const{    return d_func()->tickInterval;}/*!    \fn void QSlider::addStep()    Use setValue() instead.*//*!    \fn void QSlider::subtractStep()    Use setValue() instead.*//*! \internal    Returns the style option for slider.*/Q_GUI_EXPORT QStyleOptionSlider qt_qsliderStyleOption(QSlider *slider){    QStyleOptionSlider sliderOption;    slider->initStyleOption(&sliderOption);    return sliderOption;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -