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

📄 complexwidgets.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        r = comboBox()->style()->subControlRect(QStyle::CC_ComboBox, &option, sc, comboBox());    }    return QRect(tp.x() + r.x(), tp.y() + r.y(), r.width(), r.height());}/*! \reimp */int QAccessibleComboBox::navigate(RelationFlag rel, int entry, QAccessibleInterface **target) const{    *target = 0;    if (entry > ComboBoxSelf) switch (rel) {    case Child:        if (entry < PopupList)            return entry;        if (entry == PopupList) {            QAbstractItemView *view = comboBox()->view();            QWidget *parent = view ? view->parentWidget() : 0;            *target = QAccessible::queryAccessibleInterface(parent);            return *target ? 0 : -1;        }    case QAccessible::Left:        return entry == OpenList ? CurrentText : -1;    case QAccessible::Right:        return entry == CurrentText ? OpenList : -1;    case QAccessible::Up:        return -1;    case QAccessible::Down:        return -1;    default:        break;    }    return QAccessibleWidgetEx::navigate(rel, entry, target);}/*! \reimp */int QAccessibleComboBox::childCount() const{    return comboBox()->view() ? PopupList : OpenList;}/*! \reimp */int QAccessibleComboBox::childAt(int x, int y) const{    if (!comboBox()->isVisible())        return -1;    QPoint gp = widget()->mapToGlobal(QPoint(0, 0));    if (!QRect(gp.x(), gp.y(), widget()->width(), widget()->height()).contains(x, y))        return -1;    // a complex control    for (int i = 1; i < PopupList; ++i) {        if (rect(i).contains(x, y))            return i;    }    return 0;}/*! \reimp */int QAccessibleComboBox::indexOfChild(const QAccessibleInterface *child) const{    QObject *viewParent = comboBox()->view() ? comboBox()->view()->parentWidget() : 0;    if (child->object() == viewParent)        return PopupList;    return -1;}/*! \reimp */QString QAccessibleComboBox::text(Text t, int child) const{    QString str;    switch (t) {    case Name:        if (child == OpenList)            str = QComboBox::tr("Open");        else            str = QAccessibleWidgetEx::text(t, 0);        break;#ifndef QT_NO_SHORTCUT    case Accelerator:        if (child == OpenList)            str = (QString)QKeySequence(Qt::Key_Down);        // missing break?#endif    case Value:        if (comboBox()->isEditable())            str = comboBox()->lineEdit()->text();        else            str = comboBox()->currentText();        break;    default:        break;    }    if (str.isEmpty())        str = QAccessibleWidgetEx::text(t, 0);    return str;}/*! \reimp */QAccessible::Role QAccessibleComboBox::role(int child) const{    switch (child) {    case CurrentText:        if (comboBox()->isEditable())            return EditableText;        return StaticText;    case OpenList:        return PushButton;    case PopupList:        return List;    default:        return ComboBox;    }}/*! \reimp */QAccessible::State QAccessibleComboBox::state(int /*child*/) const{    return QAccessibleWidgetEx::state(0);}/*! \reimp */bool QAccessibleComboBox::doAction(int action, int child, const QVariantList &){    if (child == 2 && (action == DefaultAction || action == Press)) {        if (comboBox()->view()->isVisible()) {            comboBox()->hidePopup();        } else {            comboBox()->showPopup();        }        return true;    }    return false;}QString QAccessibleComboBox::actionText(int action, Text t, int child) const{    QString text;    if (child == 2 && t == Name && (action == DefaultAction || action == Press))        text = comboBox()->view()->isVisible() ? QComboBox::tr("Close") : QComboBox::tr("Open");    return text;}#endif // QT_NO_COMBOBOXstatic inline void removeInvisibleWidgetsFromList(QWidgetList *list){    if (!list || list->isEmpty())        return;    for (int i = 0; i < list->count(); ++i) {        QWidget *widget = list->at(i);        if (!widget->isVisible())            list->removeAt(i);    }}#ifndef QT_NO_SCROLLAREA// ======================= QAccessibleAbstractScrollArea =======================QAccessibleAbstractScrollArea::QAccessibleAbstractScrollArea(QWidget *widget)    : QAccessibleWidgetEx(widget, Client){    Q_ASSERT(qobject_cast<QAbstractScrollArea *>(widget));}QString QAccessibleAbstractScrollArea::text(Text textType, int child) const{    if (child == Self)        return QAccessibleWidgetEx::text(textType, 0);    QWidgetList children = accessibleChildren();    if (child < 1 || child > children.count())        return QString();    QAccessibleInterface *childInterface = queryAccessibleInterface(children.at(child - 1));    if (!childInterface)        return QString();    QString string = childInterface->text(textType, 0);    delete childInterface;    return string;}void QAccessibleAbstractScrollArea::setText(Text textType, int child, const QString &text){    if (text.isEmpty())        return;    if (child == 0) {        QAccessibleWidgetEx::setText(textType, 0, text);        return;    }    QWidgetList children = accessibleChildren();    if (child < 1 || child > children.count())        return;    QAccessibleInterface *childInterface = queryAccessibleInterface(children.at(child - 1));    if (!childInterface)        return;    childInterface->setText(textType, 0, text);    delete childInterface;}QAccessible::State QAccessibleAbstractScrollArea::state(int child) const{    if (child == Self)        return QAccessibleWidgetEx::state(child);    QWidgetList children = accessibleChildren();    if (child < 1 || child > children.count())        return QAccessibleWidgetEx::state(Self);    QAccessibleInterface *childInterface = queryAccessibleInterface(children.at(child - 1));    if (!childInterface)        return QAccessibleWidgetEx::state(Self);    QAccessible::State returnState = childInterface->state(0);    delete childInterface;    return returnState;}QVariant QAccessibleAbstractScrollArea::invokeMethodEx(QAccessible::Method, int, const QVariantList &){    return QVariant();}int QAccessibleAbstractScrollArea::childCount() const{    return accessibleChildren().count();}int QAccessibleAbstractScrollArea::indexOfChild(const QAccessibleInterface *child) const{    if (!child || !child->object())        return -1;    int index = accessibleChildren().indexOf(qobject_cast<QWidget *>(child->object()));    if (index >= 0)        return ++index;    return -1;}int QAccessibleAbstractScrollArea::navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const{    if (!target)        return -1;    *target = 0;    QWidget *targetWidget = 0;    QWidget *entryWidget = 0;    if (relation == Child ||        relation == Left || relation == Up || relation == Right || relation == Down) {        QWidgetList children = accessibleChildren();        if (entry < 0 || entry > children.count())            return -1;        if (entry == Self)            entryWidget = abstractScrollArea();        else            entryWidget = children.at(entry - 1);        AbstractScrollAreaElement entryElement = elementType(entryWidget);        // Not one of the most beautiful switches I've ever seen, but I believe it has        // to be like this since each case need special handling.        // It might be possible to make it more general, but I'll leave that as an exercise        // to the reader. :-)        switch (relation) {        case Child:            if (entry > 0)                targetWidget = children.at(entry - 1);            break;        case Left:            if (entry < 1)                break;            switch (entryElement) {            case Viewport:                if (!isLeftToRight())                    targetWidget = abstractScrollArea()->verticalScrollBar();                break;            case HorizontalContainer:                if (!isLeftToRight())                    targetWidget = abstractScrollArea()->cornerWidget();                break;            case VerticalContainer:                if (isLeftToRight())                    targetWidget = abstractScrollArea()->viewport();                break;            case CornerWidget:                if (isLeftToRight())                    targetWidget = abstractScrollArea()->horizontalScrollBar();                break;            default:                break;            }            break;        case Right:            if (entry < 1)                break;            switch (entryElement) {            case Viewport:                if (isLeftToRight())                    targetWidget = abstractScrollArea()->verticalScrollBar();                break;            case HorizontalContainer:                targetWidget = abstractScrollArea()->cornerWidget();                break;            case VerticalContainer:                if (!isLeftToRight())                    targetWidget = abstractScrollArea()->viewport();                break;            case CornerWidget:                if (!isLeftToRight())                    targetWidget = abstractScrollArea()->horizontalScrollBar();                break;            default:                break;            }            break;        case Up:            if (entry < 1)                break;            switch (entryElement) {            case HorizontalContainer:                targetWidget = abstractScrollArea()->viewport();                break;            case CornerWidget:                targetWidget = abstractScrollArea()->verticalScrollBar();                break;            default:                break;            }            break;        case Down:            if (entry < 1)                break;            switch (entryElement) {            case Viewport:                targetWidget = abstractScrollArea()->horizontalScrollBar();                break;            case VerticalContainer:                targetWidget = abstractScrollArea()->cornerWidget();                break;            default:                break;            }            break;        default:            break;        }    } else {        return QAccessibleWidgetEx::navigate(relation, entry, target);    }    if (qobject_cast<const QScrollBar *>(targetWidget))        targetWidget = targetWidget->parentWidget();    *target = QAccessible::queryAccessibleInterface(targetWidget);    return *target ? 0: -1;}QRect QAccessibleAbstractScrollArea::rect(int child) const{    if (!abstractScrollArea()->isVisible())        return QRect();    if (child == Self)        return QAccessibleWidgetEx::rect(child);    QWidgetList children = accessibleChildren();    if (child < 1 || child > children.count())        return QRect();    const QWidget *childWidget = children.at(child - 1);    if (!childWidget->isVisible())        return QRect();    return QRect(childWidget->mapToGlobal(QPoint(0, 0)), childWidget->size());}int QAccessibleAbstractScrollArea::childAt(int x, int y) const{    if (!abstractScrollArea()->isVisible())        return -1;    const QRect globalSelfGeometry = rect(Self);    if (!globalSelfGeometry.isValid() || !globalSelfGeometry.contains(QPoint(x, y)))        return -1;    const QWidgetList children = accessibleChildren();    for (int i = 0; i < children.count(); ++i) {        const QWidget *child = children.at(i);        const QRect globalChildGeometry = QRect(child->mapToGlobal(QPoint(0, 0)), child->size());        if (globalChildGeometry.contains(QPoint(x, y))) {            return ++i;        }    }    return 0;}QAbstractScrollArea *QAccessibleAbstractScrollArea::abstractScrollArea() const{    return static_cast<QAbstractScrollArea *>(object());}QWidgetList QAccessibleAbstractScrollArea::accessibleChildren() const{    QWidgetList children;    // Viewport.    QWidget * viewport = abstractScrollArea()->viewport();    if (viewport)        children.append(viewport);    // Horizontal scrollBar container.    QScrollBar *horizontalScrollBar = abstractScrollArea()->horizontalScrollBar();    if (horizontalScrollBar && horizontalScrollBar->isVisible()) {        children.append(horizontalScrollBar->parentWidget());    }    // Vertical scrollBar container.    QScrollBar *verticalScrollBar = abstractScrollArea()->verticalScrollBar();    if (verticalScrollBar && verticalScrollBar->isVisible()) {        children.append(verticalScrollBar->parentWidget());    }    // CornerWidget.    QWidget *cornerWidget = abstractScrollArea()->cornerWidget();    if (cornerWidget && cornerWidget->isVisible())        children.append(cornerWidget);    return children;}QAccessibleAbstractScrollArea::AbstractScrollAreaElementQAccessibleAbstractScrollArea::elementType(QWidget *widget) const{    if (!widget)        return Undefined;    if (widget == abstractScrollArea())        return Self;    if (widget == abstractScrollArea()->viewport())        return Viewport;    if (widget->objectName() == QLatin1String("qt_scrollarea_hcontainer"))        return HorizontalContainer;    if (widget->objectName() == QLatin1String("qt_scrollarea_vcontainer"))        return VerticalContainer;    if (widget == abstractScrollArea()->cornerWidget())        return CornerWidget;    return Undefined;}bool QAccessibleAbstractScrollArea::isLeftToRight() const{    return abstractScrollArea()->isLeftToRight();}// ======================= QAccessibleScrollArea ===========================QAccessibleScrollArea::QAccessibleScrollArea(QWidget *widget)    : QAccessibleAbstractScrollArea(widget){    Q_ASSERT(qobject_cast<QScrollArea *>(widget));}#endif // QT_NO_SCROLLAREA#endif // QT_NO_ACCESSIBILITY

⌨️ 快捷键说明

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