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

📄 qscrollview.cpp

📁 qtopia-phone-2.2.0下公共的控件实现源代码。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
   </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);}

⌨️ 快捷键说明

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