void ScrollZoomer::updateScrollBars() { if ( !canvas() ) return; const int xAxis = QwtPlotZoomer::xAxis(); const int yAxis = QwtPlotZoomer::yAxis(); int xScrollBarAxis = xAxis; if ( hScrollBarPosition() == OppositeToScale ) xScrollBarAxis = oppositeAxis(xScrollBarAxis); int yScrollBarAxis = yAxis; if ( vScrollBarPosition() == OppositeToScale ) yScrollBarAxis = oppositeAxis(yScrollBarAxis); QwtPlotLayout *layout = plot()->plotLayout(); bool showHScrollBar = needScrollBar(Qt::Horizontal); if ( showHScrollBar ) { ScrollBar *sb = scrollBar(Qt::Horizontal); sb->setPalette(plot()->palette()); const QwtScaleEngine *se = plot()->axisScaleEngine(xAxis); sb->setInverted(se->testAttribute(QwtScaleEngine::Inverted)); sb->setBase(zoomBase().left(), zoomBase().right()); sb->moveSlider(zoomRect().left(), zoomRect().right()); if ( !sb->isVisibleTo(canvas()) ) { sb->show(); layout->setCanvasMargin(layout->canvasMargin(xScrollBarAxis) + sb->extent(), xScrollBarAxis); } } else { if ( horizontalScrollBar() ) { horizontalScrollBar()->hide(); layout->setCanvasMargin(layout->canvasMargin(xScrollBarAxis) - horizontalScrollBar()->extent(), xScrollBarAxis); } } bool showVScrollBar = needScrollBar(Qt::Vertical); if ( showVScrollBar ) { ScrollBar *sb = scrollBar(Qt::Vertical); sb->setPalette(plot()->palette()); const QwtScaleEngine *se = plot()->axisScaleEngine(xAxis); sb->setInverted(!(se->testAttribute(QwtScaleEngine::Inverted))); sb->setBase(zoomBase().top(), zoomBase().bottom()); sb->moveSlider(zoomRect().top(), zoomRect().bottom()); if ( !sb->isVisibleTo(canvas()) ) { sb->show(); layout->setCanvasMargin(layout->canvasMargin(yScrollBarAxis) + sb->extent(), yScrollBarAxis); } } else { if ( verticalScrollBar() ) { verticalScrollBar()->hide(); layout->setCanvasMargin(layout->canvasMargin(yScrollBarAxis) - verticalScrollBar()->extent(), yScrollBarAxis); } } if ( showHScrollBar && showVScrollBar ) { if ( d_cornerWidget == NULL ) { d_cornerWidget = new QWidget(canvas()); #if QT_VERSION >= 0x040100 d_cornerWidget->setAutoFillBackground(true); #endif d_cornerWidget->setPalette(plot()->palette()); } d_cornerWidget->show(); } else { if ( d_cornerWidget ) d_cornerWidget->hide(); } layoutScrollBars(((QwtPlotCanvas *)canvas())->contentsRect()); plot()->updateLayout(); }
/*! Constructs a QAccessibleScrollBar object for \a w. \a name is propagated to the QAccessibleWidgetEx constructor. */ QAccessibleScrollBar::QAccessibleScrollBar(QWidget *w) : QAccessibleAbstractSlider(w, ScrollBar) { Q_ASSERT(scrollBar()); addControllingSignal(QLatin1String("valueChanged(int)")); }
/*! \reimp */ int QAccessibleScrollBar::childCount() const { if (!scrollBar()->isVisible()) return 0; return LineDown; }
QString QAccessibleScrollBar::text(QAccessible::Text t) const { if (t == QAccessible::Value) return QString::number(scrollBar()->value()); return QAccessibleAbstractSlider::text(t); }