void tst_QAbstractScrollArea::setScrollBars2() { QAbstractScrollArea scrollArea; scrollArea.resize(300, 300); QScrollBar *hbar = new QScrollBar; scrollArea.setHorizontalScrollBar(hbar); qApp->processEvents(); QCOMPARE(scrollArea.horizontalScrollBar(), hbar); QScrollBar *vbar = new QScrollBar; scrollArea.setVerticalScrollBar(vbar); qApp->processEvents(); QCOMPARE(scrollArea.verticalScrollBar(), vbar); scrollArea.horizontalScrollBar()->setRange(0, 100); scrollArea.verticalScrollBar()->setRange(0, 100); scrollArea.show(); // Make sure scroll bars are not explicitly hidden by QAbstractScrollArea itself. QVERIFY(hbar->isVisible()); QVERIFY(vbar->isVisible()); // Hide the OLD scroll bar and ensure that the NEW one is hidden. hbar->hide(); scrollArea.setHorizontalScrollBar(new QScrollBar); qApp->processEvents(); QVERIFY(!scrollArea.horizontalScrollBar()->isVisible()); vbar->hide(); scrollArea.setVerticalScrollBar(new QScrollBar); qApp->processEvents(); QVERIFY(!scrollArea.verticalScrollBar()->isVisible()); scrollArea.verticalScrollBar()->show(); scrollArea.horizontalScrollBar()->show(); // Hide the NEW scroll bar and ensure that it's visible // (because the OLD one is visible). hbar = new QScrollBar; hbar->hide(); scrollArea.setHorizontalScrollBar(hbar); qApp->processEvents(); QVERIFY(hbar->isVisible()); vbar = new QScrollBar; vbar->hide(); scrollArea.setVerticalScrollBar(vbar); qApp->processEvents(); QVERIFY(vbar->isVisible()); vbar->setRange(0, 0); qApp->processEvents(); QVERIFY(!vbar->isVisible()); hbar->setRange(0, 0); qApp->processEvents(); QVERIFY(!hbar->isVisible()); }
/* Returns a new scrollbar for the given orientation, or set the scrollbar * passed as parameter */ wxScrollBar *wxWindowQt::QtSetScrollBar( int orientation, wxScrollBar *scrollBar ) { QAbstractScrollArea *scrollArea = QtGetScrollBarsContainer(); wxCHECK_MSG( scrollArea, NULL, "Window without scrolling area" ); // Create a new scrollbar if needed if ( !scrollBar ) { scrollBar = new wxScrollBar( const_cast< wxWindowQt* >( this ), wxID_ANY, wxDefaultPosition, wxDefaultSize, orientation == wxHORIZONTAL ? wxSB_HORIZONTAL : wxSB_VERTICAL); // Connect scrollbar events to this window scrollBar->Bind( wxEVT_SCROLL_LINEUP, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_LINEDOWN, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_PAGEUP, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_PAGEDOWN, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_TOP, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_BOTTOM, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_THUMBTRACK, &wxWindowQt::QtOnScrollBarEvent, this ); scrollBar->Bind( wxEVT_SCROLL_THUMBRELEASE, &wxWindowQt::QtOnScrollBarEvent, this ); } // Let Qt handle layout if ( orientation == wxHORIZONTAL ) { scrollArea->setHorizontalScrollBar( scrollBar->GetHandle() ); m_horzScrollBar = scrollBar; } else { scrollArea->setVerticalScrollBar( scrollBar->GetHandle() ); m_vertScrollBar = scrollBar; } return scrollBar; }