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

📄 qlayoutitem.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    return 0;}/*!    Returns the widget managed by this item.*/QWidget *QWidgetItem::widget(){    return wid;}/*!    Returns true if this layout's preferred height depends on its    width; otherwise returns false. The default implementation returns    false.    Reimplement this function in layout managers that support height    for width.    \sa heightForWidth(), QWidget::heightForWidth()*/bool QLayoutItem::hasHeightForWidth() const{    return false;}/*!    Returns the minimum height this widget needs for the given width,    \a w. The default implementation simply returns heightForWidth(\a    w).*/int QLayoutItem::minimumHeightForWidth(int w) const{    return heightForWidth(w);}/*!    Returns the preferred height for this layout item, given the width    \a w.    The default implementation returns -1, indicating that the    preferred height is independent of the width of the item. Using    the function hasHeightForWidth() will typically be much faster    than calling this function and testing for -1.    Reimplement this function in layout managers that support height    for width. A typical implementation will look like this:    \code        int MyLayout::heightForWidth(int w) const        {            if (cache_dirty || cached_width != w) {                // not all C++ compilers support "mutable"                MyLayout *that = (MyLayout*)this;                int h = calculateHeightForWidth(w);                that->cached_hfw = h;                return h;            }            return cached_hfw;        }    \endcode    Caching is strongly recommended; without it layout will take    exponential time.    \sa hasHeightForWidth()*/int QLayoutItem::heightForWidth(int /* w */) const{    return -1;}/*!    Returns the control type(s) for the layout item. For a    QWidgetItem, the control type comes from the widget's size    policy; for a QLayoutItem, the control types is derived from the    layout's contents.    \sa QSizePolicy::controlType()*/QSizePolicy::ControlTypes QLayoutItem::controlTypes() const{    // ### Qt 5: This function should probably be virtual instead    if (const QWidget *widget = const_cast<QLayoutItem*>(this)->widget()) {        return widget->sizePolicy().controlType();    } else if (const QLayout *layout = const_cast<QLayoutItem*>(this)->layout()) {        QSizePolicy::ControlTypes types;        for (int i = layout->count() - 1; i >= 0; --i)            types |= layout->itemAt(i)->controlTypes();        return types;    }    return QSizePolicy::DefaultType;}/*!    \reimp*/void QSpacerItem::setGeometry(const QRect &r){    rect = r;}/*!    \reimp*/void QWidgetItem::setGeometry(const QRect &rect){    if (isEmpty())        return;    QRect r = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)            ? fromLayoutItemRect(wid->d_func(), rect)            : rect;    QSize s = r.size().boundedTo(qSmartMaxSize(this));    int x = r.x();    int y = r.y();    if (align & (Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask)) {        QSize pref = wid->sizeHint().expandedTo(wid->minimumSize()); //###        if (align & Qt::AlignHorizontal_Mask)            s.setWidth(qMin(s.width(), pref.width()));        if (align & Qt::AlignVertical_Mask) {            if (hasHeightForWidth())                s.setHeight(qMin(s.height(), heightForWidth(s.width())));            else                s.setHeight(qMin(s.height(), pref.height()));        }    }    Qt::Alignment alignHoriz = QStyle::visualAlignment(wid->layoutDirection(), align);    if (alignHoriz & Qt::AlignRight)        x = x + (r.width() - s.width());    else if (!(alignHoriz & Qt::AlignLeft))        x = x + (r.width() - s.width()) / 2;    if (align & Qt::AlignBottom)        y = y + (r.height() - s.height());    else if (!(align & Qt::AlignTop))        y = y + (r.height() - s.height()) / 2;    wid->setGeometry(x, y, s.width(), s.height());}/*!    \reimp*/QRect QSpacerItem::geometry() const{    return rect;}/*!    \reimp*/QRect QWidgetItem::geometry() const{    return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)           ? toLayoutItemRect(wid->d_func(), wid->geometry())           : wid->geometry();}/*!    \reimp*/bool QWidgetItem::hasHeightForWidth() const{    if (isEmpty())        return false;    if (wid->layout())        return wid->layout()->hasHeightForWidth();    return wid->sizePolicy().hasHeightForWidth();}/*!    \reimp*/int QWidgetItem::heightForWidth(int w) const{    if (isEmpty())        return -1;    w = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)      ? fromLayoutItemSize(wid->d_func(), QSize(w, 0)).width()      : w;    int hfw;    if (wid->layout())        hfw = wid->layout()->totalHeightForWidth(w);    else        hfw = wid->heightForWidth(w);    if (hfw > wid->maximumHeight())        hfw = wid->maximumHeight();    if (hfw < wid->minimumHeight())        hfw = wid->minimumHeight();    hfw = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)        ? toLayoutItemSize(wid->d_func(), QSize(0, hfw)).height()        : hfw;    if (hfw < 0)        hfw = 0;    return hfw;}/*!    \reimp*/Qt::Orientations QSpacerItem::expandingDirections() const{    return sizeP.expandingDirections();}/*!    \reimp*/Qt::Orientations QWidgetItem::expandingDirections() const{    if (isEmpty())        return Qt::Orientations(0);    Qt::Orientations e = wid->sizePolicy().expandingDirections();    /*      If the layout is expanding, we make the widget expanding, even if      its own size policy isn't expanding. This behavior should be      reconsidered in Qt 4.0. (###)    */    if (wid->layout()) {        if (wid->sizePolicy().horizontalPolicy() & QSizePolicy::GrowFlag                && (wid->layout()->expandingDirections() & Qt::Horizontal))            e |= Qt::Horizontal;        if (wid->sizePolicy().verticalPolicy() & QSizePolicy::GrowFlag                && (wid->layout()->expandingDirections() & Qt::Vertical))            e |= Qt::Vertical;    }    if (align & Qt::AlignHorizontal_Mask)        e &= ~Qt::Horizontal;    if (align & Qt::AlignVertical_Mask)        e &= ~Qt::Vertical;    return e;}/*!    \reimp*/QSize QSpacerItem::minimumSize() const{    return QSize(sizeP.horizontalPolicy() & QSizePolicy::ShrinkFlag ? 0 : width,                 sizeP.verticalPolicy() & QSizePolicy::ShrinkFlag ? 0 : height);}/*!    \reimp*/QSize QWidgetItem::minimumSize() const{    if (isEmpty())        return QSize(0, 0);    return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)           ? toLayoutItemSize(wid->d_func(), qSmartMinSize(this))           : qSmartMinSize(this);}/*!    \reimp*/QSize QSpacerItem::maximumSize() const{    return QSize(sizeP.horizontalPolicy() & QSizePolicy::GrowFlag ? QLAYOUTSIZE_MAX : width,                 sizeP.verticalPolicy() & QSizePolicy::GrowFlag ? QLAYOUTSIZE_MAX : height);}/*!    \reimp*/QSize QWidgetItem::maximumSize() const{    if (isEmpty()) {        return QSize(0, 0);    } else {        return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)               ? toLayoutItemSize(wid->d_func(), qSmartMaxSize(this, align))               : qSmartMaxSize(this, align);    }}/*!    \reimp*/QSize QSpacerItem::sizeHint() const{    return QSize(width, height);}/*!    \reimp*/QSize QWidgetItem::sizeHint() const{    QSize s(0, 0);    if (!isEmpty()) {        s = wid->sizeHint().expandedTo(wid->minimumSizeHint());        s = s.boundedTo(wid->maximumSize())             .expandedTo(wid->minimumSize());        s = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect)           ? toLayoutItemSize(wid->d_func(), s)           : s;        if (wid->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored)            s.setWidth(0);        if (wid->sizePolicy().verticalPolicy() == QSizePolicy::Ignored)            s.setHeight(0);    }    return s;}/*!    Returns true.*/bool QSpacerItem::isEmpty() const{    return true;}/*!    Returns true if the widget is hidden; otherwise returns false.    \sa QWidget::isHidden()*/bool QWidgetItem::isEmpty() const{    return wid->isHidden() || wid->isWindow();}

⌨️ 快捷键说明

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