?? qscrollview.cpp
字號:
</ul> (The modes for the horizontal and vertical scroll bars are independent.)*//*! Sets the mode for the vertical scrollbar. \sa vScrollBarMode(), setHScrollBarMode()*/void QScrollView::setVScrollBarMode( ScrollBarMode mode ){ if (d->vMode != mode) { d->vMode = mode; updateScrollBars(); }}/*! Returns the currently set mode for the horizontal scrollbar. \sa setHScrollBarMode()*/QScrollView::ScrollBarMode QScrollView::hScrollBarMode() const{ return d->hMode;}/*! Sets the mode for the horizontal scrollbar. <ul> <li> \c Auto (the default) shows a scrollbar when the content is too wide to fit. <li> \c AlwaysOff never shows a scrollbar. <li> \c AlwaysOn always shows a scrollbar. </ul> \sa hScrollBarMode(), setVScrollBarMode()*/void QScrollView::setHScrollBarMode( ScrollBarMode mode ){ if (d->hMode != mode) { d->hMode = mode; updateScrollBars(); }}/*!Returns the widget in the corner between the two scrollbars.By default, no corner widget is present.*/QWidget* QScrollView::cornerWidget() const{ return d->corner;}/*! Sets the widget in the corner between the two scrollbars. You will probably also want to set at least one of the scrollbar modes to AlwaysOn. Passing 0 shows no widget in the corner. Any previous corner widget is hidden. You may call setCornerWidget() with the same widget at different times. All widgets set here will be deleted by the QScrollView when it destructs unless you separately reparent the widget after setting some other corner widget (or 0). Any \e newly set widget should have no current parent. By default, no corner widget is present. \sa setVScrollBarMode(), setHScrollBarMode()*/void QScrollView::setCornerWidget(QWidget* corner){ QWidget* oldcorner = d->corner; if (oldcorner != corner) { if (oldcorner) oldcorner->hide(); d->corner = corner; if ( corner && corner->parentWidget() != this ) { // #### No clean way to get current WFlags corner->reparent( this, (((QScrollView*)corner))->getWFlags(), QPoint(0,0), FALSE ); } updateScrollBars(); if ( corner ) corner->show(); }}/*! Sets the resize policy to \a r. \sa resizePolicy() ResizePolicy*/void QScrollView::setResizePolicy( ResizePolicy r ){ d->policy = r;}/*! Returns the currently set ResizePolicy. \sa setResizePolicy() ResizePolicy*/QScrollView::ResizePolicy QScrollView::resizePolicy() const{ return d->policy;}/*! \reimp*/void QScrollView::setEnabled( bool enable ){ QFrame::setEnabled( enable );}/*! Removes a child from the scrolled area. Note that this happens automatically if the child is deleted.*/void QScrollView::removeChild(QWidget* child){ if ( !d ) // In case we are destructing return; QSVChildRec *r = d->rec(child); if ( r ) d->deleteChildRec( r );}/*! \reimp*/void QScrollView::removeChild(QObject* child){ QFrame::removeChild(child);}/*! Inserts \a child into the scrolled area positioned at (\a x, \a y). The position defaults to (0,0). If the child is already in the view, it is just moved. You may want to call enableClipper(TRUE) if you add a large number of widgets.*/void QScrollView::addChild(QWidget* child, int x, int y){ if ( child->parentWidget() == viewport() ) { // May already be there QSVChildRec *r = d->rec(child); if (r) { r->moveTo(this,x,y,d->clipped_viewport); if ( d->policy > Manual ) { d->autoResizeHint(this); d->autoResize(this); // #### better to just deal with this one widget! } return; } } if ( d->children.isEmpty() && d->policy != Manual ) { if ( d->policy == Default ) setResizePolicy( AutoOne ); child->installEventFilter( this ); } else if ( d->policy == AutoOne ) { child->removeEventFilter( this ); //#### ????? setResizePolicy( Manual ); } if ( child->parentWidget() != viewport() ) { child->reparent( viewport(), 0, QPoint(0,0), FALSE ); } d->addChildRec(child,x,y)->hideOrShow(this, d->clipped_viewport); if ( d->policy > Manual ) { d->autoResizeHint(this); d->autoResize(this); // #### better to just deal with this one widget! }}/*! Repositions \a child to (\a x, \a y). This functions the same as addChild().*/void QScrollView::moveChild(QWidget* child, int x, int y){ addChild(child,x,y);}/*! Returns the X position of the given child widget. Use this rather than QWidget::x() for widgets added to the view.*/int QScrollView::childX(QWidget* child){ return d->rec(child)->x;}/*! Returns the Y position of the given child widget. Use this rather than QWidget::y() for widgets added to the view.*/int QScrollView::childY(QWidget* child){ return d->rec(child)->y;}/*! \obsolete Returns TRUE if \a child is visible. This is equivalent to child->isVisible().*/bool QScrollView::childIsVisible(QWidget* child){ return child->isVisible();}/*! \obsolete Sets the visibility of \a child. Equivalent to QWidget::show() or QWidget::hide().*/void QScrollView::showChild(QWidget* child, bool y){ if ( y ) child->show(); else child->hide();}/*! This event filter ensures the scrollbars are updated when a single contents widget is resized, shown, hidden, or destroyed, and passes mouse events to the QScrollView.*/bool QScrollView::eventFilter( QObject *obj, QEvent *e ){ if (!d) return FALSE; // we are destructing if ( obj == &d->viewport || obj == d->clipped_viewport ) { switch ( e->type() ) { /* Forward many events to viewport...() functions */ case QEvent::Paint: viewportPaintEvent( (QPaintEvent*)e ); break; case QEvent::Resize: viewportResizeEvent( (QResizeEvent*)e ); break; case QEvent::MouseButtonPress: viewportMousePressEvent( (QMouseEvent*)e ); break; case QEvent::MouseButtonRelease: viewportMouseReleaseEvent( (QMouseEvent*)e ); break; case QEvent::MouseButtonDblClick: viewportMouseDoubleClickEvent( (QMouseEvent*)e ); break; case QEvent::MouseMove: viewportMouseMoveEvent( (QMouseEvent*)e ); break;#ifndef QT_NO_DRAGANDDROP case QEvent::DragEnter: viewportDragEnterEvent( (QDragEnterEvent*)e ); break; case QEvent::DragMove: { if ( d->drag_autoscroll ) { QPoint vp = ((QDragMoveEvent *) e)->pos(); QRect inside_margin( autoscroll_margin, autoscroll_margin, visibleWidth() - autoscroll_margin * 2, visibleHeight() - autoscroll_margin * 2 ); if ( !inside_margin.contains( vp ) ) { startDragAutoScroll(); // Keep sending move events ( (QDragMoveEvent*)e )->accept( QRect(0,0,0,0) ); } } viewportDragMoveEvent( (QDragMoveEvent*)e ); } break; case QEvent::DragLeave: stopDragAutoScroll(); viewportDragLeaveEvent( (QDragLeaveEvent*)e ); break; case QEvent::Drop: stopDragAutoScroll(); viewportDropEvent( (QDropEvent*)e ); break;#endif // QT_NO_DRAGANDDROP case QEvent::Wheel: viewportWheelEvent( (QWheelEvent*)e ); break; case QEvent::ChildRemoved: removeChild((QWidget*)((QChildEvent*)e)->child()); break; case QEvent::LayoutHint: d->autoResizeHint(this); break; default: break; } } else if ( d && d->rec((QWidget*)obj) ) { // must be a child if ( e->type() == QEvent::Resize ) d->autoResize(this); else if ( e->type() == QEvent::Move ) d->autoMove(this); }#ifdef QT_KEYPAD_MODE else if ( qt_modalEditingEnabled && obj == this && (e->type() == QEvent::EnterModalEdit || e->type() == QEvent::LeaveModalEdit) ) { if ( inherits("QListBox") || inherits("QTextView") ) d->viewport.update(); }#endif return QFrame::eventFilter( obj, e ); // always continue with standard event processing}/*! This event handler is called whenever the QScrollView receives a mousePressEvent() - the press position is translated to be a point on the contents.*/void QScrollView::contentsMousePressEvent( QMouseEvent* ){}/*! This event handler is called whenever the QScrollView receives a mouseReleaseEvent() - the release position is translated to be a point on the contents.*/void QScrollView::contentsMouseReleaseEvent( QMouseEvent* ){}/*! This event handler is called whenever the QScrollView receives a mouseDoubleClickEvent() - the click position is translated to be a point on the contents.*/void QScrollView::contentsMouseDoubleClickEvent( QMouseEvent* ){}/*! This event handler is called whenever the QScrollView receives a mouseMoveEvent() - the mouse position is translated to be a point on the contents.*/void QScrollView::contentsMouseMoveEvent( QMouseEvent* ){}#ifndef QT_NO_DRAGANDDROP/*! This event handler is called whenever the QScrollView receives a dragEnterEvent() - the drag position is translated to be a point on the contents.*/void QScrollView::contentsDragEnterEvent( QDragEnterEvent * ){}/*! This event handler is called whenever the QScrollView receives a dragMoveEvent() - the drag position is translated to be a point on the contents.*/void QScrollView::contentsDragMoveEvent( QDragMoveEvent * ){}/*! This event handler is called whenever the QScrollView receives a dragLeaveEvent() - the drag position is translated to be a point on the contents.*/void QScrollView::contentsDragLeaveEvent( QDragLeaveEvent * ){}/*! This event handler is called whenever the QScrollView receives a dropEvent() - the drop position is translated to be a point on the contents.*/void QScrollView::contentsDropEvent( QDropEvent * ){}#endif // QT_NO_DRAGANDDROP/*! This event handler is called whenever the QScrollView receives a wheelEvent() - the mouse position is translated to be a point on the contents.*/void QScrollView::contentsWheelEvent( QWheelEvent * e ){ e->ignore();}/*! This is a low-level painting routine that draws the viewport contents. Reimplement this if drawContents() is too high-level. (for example, if you don't want to open a QPainter on the viewport).*/void QScrollView::viewportPaintEvent( QPaintEvent* pe ){ QWidget* vp = viewport(); QPainter p(vp); QRect r = pe->rect(); if ( d->clipped_viewport ) { QRect rr( -d->clipped_viewport->x(), -d->clipped_viewport->y(), d->viewport.width(), d->viewport.height() ); r &= rr; if ( r.isValid() ) { int ex = r.x() + d->clipped_viewport->x() + contentsX(); int ey = r.y() + d->clipped_viewport->y() + contentsY(); int ew = r.width(); int eh = r.height(); drawContentsOffset(&p, contentsX()+d->clipped_viewport->x(), contentsY()+d->clipped_viewport->y(), ex, ey, ew, eh); } } else { r &= d->viewport.rect(); int ex = r.x() + contentsX(); int ey = r.y() + contentsY(); int ew = r.width(); int eh = r.height(); drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); }}/*! To provide simple processing of events on the contents, this method receives all resize events sent to the viewport. \sa QWidget::resizeEvent()*/void QScrollView::viewportResizeEvent( QResizeEvent* ){}/*! To provide simple processing of events on the contents, this method receives all mouse press events sent to the viewport. The default implementation translates the event and calls contentsMousePressEvent(). \sa contentsMousePressEvent(), QWidget::mousePressEvent()*/void QScrollView::viewportMousePressEvent( QMouseEvent* e ){ QMouseEvent ce(e->type(), viewportToContents(e->pos()), e->globalPos(), e->button(), e->state()); contentsMousePressEvent(&ce);}/*! To provide simple processing of events on the contents, this method receives all mouse release events sent to the viewport. The default implementation translates the event and calls contentsMouseReleaseEvent(). \sa QWidget::mouseReleaseEvent()*/void QScrollView::viewportMouseReleaseEvent( QMouseEvent* e ){ QMouseEvent ce(e->type(), viewportToContents(e->pos()), e->globalPos(), e->button(), e->state()); contentsMouseReleaseEvent(&ce);}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -