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

📄 qwt_slider.cpp

📁 软件无线电的平台
💻 CPP
📖 第 1 页 / 共 2 页
字号:
void QwtSlider::getScrollMode(const QPoint &p,     int &scrollMode, int &direction ){    if (!d_sliderRect.contains(p))    {        scrollMode = ScrNone;        direction = 0;        return;    }    const int pos = ( orientation() == Qt::Horizontal ) ? p.x() : p.y();    const int markerPos = xyPosition(value());    if ((pos > markerPos - d_thumbLength / 2)        && (pos < markerPos + d_thumbLength / 2))    {        scrollMode = ScrMouse;        direction = 0;        return;    }    scrollMode = ScrPage;    direction = (pos > markerPos) ? 1 : -1;    if ( scaleDraw()->i1() > scaleDraw()->i2() )        direction = -direction;}//! Qt paint eventvoid QwtSlider::paintEvent(QPaintEvent *e){    const QRect &ur = e->rect();    if ( ur.isValid() )    {        QwtPaintBuffer paintBuffer(this, ur);        draw(paintBuffer.painter(), ur);    }}//! redraw the slidervoid QwtSlider::draw(QPainter *painter, const QRect&){    if (d_scalePos != None)        scaleDraw()->draw(painter);    drawSlider(painter, d_sliderRect);    if ( hasFocus() )    {        const QRect rect = d_sliderRect;#if QT_VERSION < 300        style().drawFocusRect(painter, rect, colorGroup());#else        style().drawPrimitive(QStyle::PE_FocusRect, painter,            rect, colorGroup());#endif    }}//! Qt resize eventvoid QwtSlider::resizeEvent(QResizeEvent *){    layoutSlider( FALSE );}//! Recalculate the slider's geometry and layout based on//  the current rect and fonts.//  \param update_geometry  notify the layout system and call update//         to redraw the scalevoid QwtSlider::layoutSlider( bool update_geometry ){    int sliderWidth = d_thumbWidth;    int sld1 = d_thumbLength / 2 - 1;    int sld2 = d_thumbLength / 2 + d_thumbLength % 2;    if ( d_bgStyle & BgTrough )    {        sliderWidth += 2 * d_borderWidth;        sld1 += d_borderWidth;        sld2 += d_borderWidth;    }    int scd = 0;    if ( d_scalePos != None )    {        int d1, d2;        scaleDraw()->minBorderDist(fontMetrics(), d1, d2);        scd = QMAX(d1, d2);    }    int slo = scd - sld1;    if ( slo < 0 )        slo = 0;    const QRect r = rect();    switch ( d_scalePos )    {        case Top:        {            d_sliderRect.setRect(r.x() + d_xMargin + slo,                r.y() + r.height() -                d_yMargin - sliderWidth,                r.width() - 2 * d_xMargin - 2 * slo,                sliderWidth);            scaleDraw()->setGeometry(d_sliderRect.x() + sld1,                d_sliderRect.y() - d_scaleDist,                d_sliderRect.width() - sld1 - sld2,                QwtScaleDraw::Top);            break;        }        case Bottom:        {            d_sliderRect.setRect(r.x() + d_xMargin + slo,                r.y() + d_yMargin,                r.width() - 2 * d_xMargin - 2 * slo,                sliderWidth);            scaleDraw()->setGeometry(d_sliderRect.x() + sld1,                d_sliderRect.y() + d_sliderRect.height() +                d_scaleDist,                d_sliderRect.width() - sld1 - sld2,                QwtScaleDraw::Bottom);            break;        }        case Left:        {            d_sliderRect.setRect(r.x() + r.width() -                sliderWidth - d_xMargin,                r.y() + d_yMargin + slo,                sliderWidth,                r.height() - 2 * d_yMargin - 2 * slo);            scaleDraw()->setGeometry(d_sliderRect.x() - d_scaleDist,                d_sliderRect.y() + sld1,                d_sliderRect.height() - sld1 - sld2,                QwtScaleDraw::Left);            break;        }        case Right:        {            d_sliderRect.setRect(r.x() + d_xMargin,                r.y() + d_yMargin + slo,                sliderWidth,                r.height() - 2 * d_yMargin - 2 * slo);            scaleDraw()->setGeometry(d_sliderRect.x() + d_sliderRect.width() +                d_scaleDist,                d_sliderRect.y() + sld1,                d_sliderRect.height() - sld1 - sld2,                QwtScaleDraw::Right);            break;        }        default:        {            d_sliderRect.setRect(r.x() + d_xMargin,                r.y() + d_yMargin,                r.width() - 2 * d_xMargin,                r.height() - 2 * d_yMargin);            // QwtScaleDraw is derived from QwtDiMap. Even if            // no scale is required we keep the map alive.            if ( orientation() == Qt::Horizontal )            {                scaleDraw()->setIntRange(                    d_sliderRect.x() + sld1,                    d_sliderRect.x() + d_sliderRect.width() - sld2 - 1);            }            else            {                scaleDraw()->setIntRange(                    d_sliderRect.y() + d_sliderRect.height() - sld2 - 1,                    d_sliderRect.y() + sld1);            }        }    }    if ( update_geometry )    {        updateGeometry();        update();    }}//! Notify change of valuevoid QwtSlider::valueChange(){    QwtSliderBase::valueChange();    update();}//! Notify change of rangevoid QwtSlider::rangeChange(){    if (!hasUserScale())    {        scaleDraw()->setScale(minValue(), maxValue(),             scaleMaxMajor(), scaleMaxMinor(),            scaleDraw()->scaleDiv().logScale());    }    QwtSliderBase::rangeChange();    layoutSlider();}/*!  \brief Set distances between the widget's border and internals.  \param xMargin Horizontal margin  \param yMargin Vertical margin*/void QwtSlider::setMargins(int xMargin, int yMargin){    if ( xMargin < 0 )        xMargin = 0;    if ( yMargin < 0 )        yMargin = 0;    if ( xMargin != d_xMargin || yMargin != d_yMargin )    {        d_xMargin = xMargin;        d_yMargin = yMargin;        layoutSlider();    }}/*!  \return Horizontal: MinimumExpanding/Fixed,        Vertical: Fixed/MinimumExpanding*/QSizePolicy QwtSlider::sizePolicy() const{    QSizePolicy sp;    if ( orientation() == Qt::Horizontal )    {        sp.setHorData( QSizePolicy::MinimumExpanding );        sp.setVerData( QSizePolicy::Fixed );    }    else    {        sp.setHorData( QSizePolicy::Fixed );        sp.setVerData( QSizePolicy::MinimumExpanding );    }    return sp;}/*!  \return QwtSlider::minimumSizeHint()*/QSize QwtSlider::sizeHint() const{    return minimumSizeHint();}/*!  \brief Return a minimum size hint  \warning The return value of QwtSlider::minimumSizeHint() depends on            the font and the scale.*/QSize QwtSlider::minimumSizeHint() const{    int w = 0, h = 0;    int sliderWidth = d_thumbWidth;    if (d_bgStyle & BgTrough)        sliderWidth += 2 * d_borderWidth;    if (d_scalePos != None)    {        int msWidth = scaleDraw()->minWidth( QPen(), fontMetrics() );        int msHeight = scaleDraw()->minHeight( QPen(), fontMetrics() );                int d1, d2;        scaleDraw()->minBorderDist(fontMetrics(), d1, d2);        int msMbd = QMAX(d1, d2);        int mbd = d_thumbLength / 2;        if (d_bgStyle & BgTrough)            mbd += d_borderWidth;        if ( mbd < msMbd )            mbd = msMbd;        if (orientation() == Qt::Vertical)        {            w = 2 * d_xMargin + sliderWidth + msWidth + d_scaleDist;            h = msHeight - 2 * msMbd + 2 * mbd + 2 * d_yMargin;        }        else        {            w = msWidth - 2 * msMbd + 2 * mbd + 2 * d_xMargin;            h = 2 * d_yMargin + sliderWidth  + msHeight + d_scaleDist;        }    }    else  // no scale    {        if (orientation() == Qt::Vertical)        {            w = 2 * d_xMargin + sliderWidth;            h = 200 + 2 * d_yMargin;        }        else        {            w = 200 + 2 * d_xMargin;            h = 2 * d_yMargin + sliderWidth;        }    }    return QSize(w,h);}

⌨️ 快捷键说明

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