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

📄 q3scrollview.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            needv=true;            if (d->vMode == Auto)                showv=true;        }        if (showv && !d->inresize && w-hsbExt-lmarg-rmarg < d->contentsWidth()) {            needh=true;            if (d->hMode == Auto)                showh=true;        }    } else {        // Scrollbars not needed, only show scroll bar that are always on.        needh = needv = false;        showh = d->hMode == AlwaysOn;        showv = d->vMode == AlwaysOn;    }    bool sc = d->signal_choke;    d->signal_choke=true;    // Hide unneeded scroll bar, calculate viewport size    if (showh) {        porth=h-hsbExt-tmarg-bmarg;    } else {        if (!needh)            d->hbar->setValue(0);        d->hbar->hide();        porth=h-tmarg-bmarg;    }    if (showv) {        portw=w-vsbExt-lmarg-rmarg;    } else {        if (!needv)            d->vbar->setValue(0);        d->vbar->hide();        portw=w-lmarg-rmarg;    }    // Configure scroll bars that we will show    if (needv) {        d->vbar->setRange(0, contentsHeight()-porth);        d->vbar->setSteps(Q3ScrollView::d->vbar->lineStep(), porth);    } else {        d->vbar->setRange(0, 0);    }    if (needh) {        d->hbar->setRange(0, QMAX(0, d->contentsWidth()-portw));        d->hbar->setSteps(Q3ScrollView::d->hbar->lineStep(), portw);    } else {        d->hbar->setRange(0, 0);    }    // Position the scroll bars, viewport and corner widget.    int bottom;    bool reverse = QApplication::reverseLayout();    int xoffset = (reverse && (showv || cornerWidget())) ? vsbExt : 0;    int xpos = reverse ? 0 : w - vsbExt;    bool frameContentsOnly =        style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents);    if(! frameContentsOnly) {        if (reverse)            xpos += fw;        else            xpos -= fw;    }    if (showh) {        int right = (showc || showv || cornerWidget()) ? w-vsbExt : w;        if (! frameContentsOnly)            setHBarGeometry(*d->hbar, fw + xoffset, h-hsbExt-fw,                             right-fw-fw, hsbExt);        else            setHBarGeometry(*d->hbar, 0 + xoffset, h-hsbExt, right,                             hsbExt);        bottom=h-hsbExt;    } else {        bottom=h;    }    if (showv) {        clipper()->setGeometry(lmarg + xoffset, tmarg,                                w-vsbExt-lmarg-rmarg,                                bottom-tmarg-bmarg);        d->viewportResized(w-vsbExt-lmarg-rmarg, bottom-tmarg-bmarg);        if (! frameContentsOnly)            changeFrameRect(QRect(0, 0, w, h));        else            changeFrameRect(QRect(xoffset, 0, w-vsbExt, bottom));        if (showc || cornerWidget()) {            if (! frameContentsOnly)                setVBarGeometry(*d->vbar, xpos,                                 fw, vsbExt,                                 h-hsbExt-fw-fw);            else                setVBarGeometry(*d->vbar, xpos, 0,                                 vsbExt,                                 h-hsbExt);        }        else {            if (! frameContentsOnly)                setVBarGeometry(*d->vbar, xpos,                                 fw, vsbExt,                                 bottom-fw-fw);            else                setVBarGeometry(*d->vbar, xpos, 0,                                 vsbExt, bottom);        }    } else {        if (! frameContentsOnly)            changeFrameRect(QRect(0, 0, w, h));        else            changeFrameRect(QRect(0, 0, w, bottom));        clipper()->setGeometry(lmarg, tmarg,                                w-lmarg-rmarg, bottom-tmarg-bmarg);        d->viewportResized(w-lmarg-rmarg, bottom-tmarg-bmarg);    }    QWidget *corner = d->corner;    if (d->corner) {        if (! frameContentsOnly)            corner->setGeometry(xpos,                                h-hsbExt-fw,                                vsbExt,                                hsbExt);        else            corner->setGeometry(xpos,                                h-hsbExt,                                vsbExt,                                hsbExt);    }    d->signal_choke=sc;    if (d->contentsX()+visibleWidth() > d->contentsWidth()) {        int x;#if 0        if (reverse)            x =QMIN(0,d->contentsWidth()-visibleWidth());        else#endif            x =QMAX(0,d->contentsWidth()-visibleWidth());        d->hbar->setValue(x);        // Do it even if it is recursive        moveContents(-x, -d->contentsY());    }    if (d->contentsY()+visibleHeight() > contentsHeight()) {        int y=QMAX(0,contentsHeight()-visibleHeight());        d->vbar->setValue(y);        // Do it even if it is recursive        moveContents(-d->contentsX(), -y);    }    // Finally, show the scroll bars    if (showh && (d->hbar->isHidden() || !d->hbar->isVisible()))        d->hbar->show();    if (showv && (d->vbar->isHidden() || !d->vbar->isVisible()))        d->vbar->show();    d->signal_choke=true;    d->vbar->setValue(d->contentsY());    d->hbar->setValue(d->contentsX());    d->signal_choke=false;    QSize newVisibleSize(visibleWidth(), visibleHeight());    if (d->clipped_viewport && oldVisibleSize != newVisibleSize) {        QResizeEvent e(newVisibleSize, oldVisibleSize);        viewportResizeEvent(&e);    }}/*!    \reimp*/void Q3ScrollView::setVisible(bool visible){    if (visible && !isVisible()) {        QWidget::setVisible(visible);        updateScrollBars();        d->hideOrShowAll(this);    } else {        QWidget::setVisible(visible);    }}/*!    \internal */void Q3ScrollView::resize(int w, int h){    QWidget::resize(w, h);}/*!    \internal*/void Q3ScrollView::resize(const QSize& s){    resize(s.width(), s.height());}/*!    \reimp*/void Q3ScrollView::resizeEvent(QResizeEvent* event){    Q3Frame::resizeEvent(event);#if 0    if (QApplication::reverseLayout()) {        d->fake_scroll = true;        scrollBy(-event->size().width() + event->oldSize().width(), 0);        d->fake_scroll = false;    }#endif    bool inresize = d->inresize;    d->inresize = true;    updateScrollBars();    d->inresize = inresize;    d->scrollbar_timer.start(0, true);    d->hideOrShowAll(this);}/*!    \reimp*/void  Q3ScrollView::mousePressEvent(QMouseEvent * e){    e->ignore();}/*!    \reimp*/void  Q3ScrollView::mouseReleaseEvent(QMouseEvent *e){    e->ignore();}/*!    \reimp*/void  Q3ScrollView::mouseDoubleClickEvent(QMouseEvent *e){    e->ignore();}/*!    \reimp*/void  Q3ScrollView::mouseMoveEvent(QMouseEvent *e){    e->ignore();}/*!    \reimp*/#ifndef QT_NO_WHEELEVENTvoid Q3ScrollView::wheelEvent(QWheelEvent *e){    QWheelEvent ce(viewport()->mapFromGlobal(e->globalPos()),                    e->globalPos(), e->delta(), e->state());    viewportWheelEvent(&ce);    if (!ce.isAccepted()) {        if (e->orientation() == Horizontal && horizontalScrollBar())            horizontalScrollBar()->event(e);        else  if (e->orientation() == Vertical && verticalScrollBar())            verticalScrollBar()->event(e);    } else {        e->accept();    }}#endif/*!    \reimp*/void Q3ScrollView::contextMenuEvent(QContextMenuEvent *e){    if (e->reason() != QContextMenuEvent::Keyboard) {        e->ignore();        return;    }    QContextMenuEvent ce(e->reason(), viewport()->mapFromGlobal(e->globalPos()),                          e->globalPos(), e->state());    viewportContextMenuEvent(&ce);    if (ce.isAccepted())        e->accept();    else        e->ignore();}Q3ScrollView::ScrollBarMode Q3ScrollView::vScrollBarMode() const{    return d->vMode;}/*!    \enum Q3ScrollView::ScrollBarMode    This enum type describes the various modes of Q3ScrollView's scroll    bars.    \value Auto  Q3ScrollView shows a scroll bar when the content is    too large to fit and not otherwise. This is the default.    \value AlwaysOff  Q3ScrollView never shows a scroll bar.    \value AlwaysOn  Q3ScrollView always shows a scroll bar.    (The modes for the horizontal and vertical scroll bars are    independent.)*//*!    \property Q3ScrollView::vScrollBarMode    \brief the mode for the vertical scroll bar    The default mode is Q3ScrollView::Auto.    \sa hScrollBarMode*/void  Q3ScrollView::setVScrollBarMode(ScrollBarMode mode){    if (d->vMode != mode) {        d->vMode = mode;        updateScrollBars();    }}/*!    \property Q3ScrollView::hScrollBarMode    \brief the mode for the horizontal scroll bar    The default mode is Q3ScrollView::Auto.    \sa vScrollBarMode*/Q3ScrollView::ScrollBarMode Q3ScrollView::hScrollBarMode() const{    return d->hMode;}void Q3ScrollView::setHScrollBarMode(ScrollBarMode mode){    if (d->hMode != mode) {        d->hMode = mode;        updateScrollBars();    }}/*!    Returns the widget in the corner between the two scroll bars.    By default, no corner widget is present.*/QWidget* Q3ScrollView::cornerWidget() const{    return d->corner;}/*!    Sets the widget in the \a corner between the two scroll bars.    You will probably also want to set at least one of the scroll bar    modes to \c AlwaysOn.    Passing 0 shows no widget in the corner.    Any previous \a corner widget is hidden.    You may call setCornerWidget() with the same widget at different    times.    All widgets set here will be deleted by the Q3ScrollView when it is    destroyed 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 Q3ScrollView::setCornerWidget(QWidget* corner){    QWidget* oldcorner = d->corner;    if (oldcorner != corner) {        if (oldcorner) oldcorner->hide();        d->corner = corner;        corner->setParent(this);        updateScrollBars();        if (corner) corner->show();    }}void Q3ScrollView::setResizePolicy(ResizePolicy r){    d->policy = r;}/*!    \property Q3ScrollView::resizePolicy    \brief the resize policy    The default is \c Default.    \sa ResizePolicy*/Q3ScrollView::ResizePolicy Q3ScrollView::resizePolicy() const{    return d->policy;}/*!    \internal*/void Q3ScrollView::setEnabled(bool enable){    Q3Frame::setEnabled(enable);}/*!    Removes the \a child widget from the scrolled area. Note that this    happens automatically if the \a child is deleted.*/void Q3ScrollView::removeChild(QWidget* child){    if (!d || !child) // First check in case we are destructing        return;    QSVChildRec *r = d->rec(child);    if (r) d->deleteChildRec(r);}/*!    \internal*/void Q3ScrollView::removeChild(QObject* child){    Q3Frame::removeChild(child);}/*!    Inserts the widget, \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.

⌨️ 快捷键说明

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