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

📄 qaccessiblewidgets.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    return QAccessible::StaticText;}#endif // QT_NO_TEXTBROWSER#ifndef QT_NO_CALENDARWIDGET// ===================== QAccessibleCalendarWidget ========================QAccessibleCalendarWidget::QAccessibleCalendarWidget(QWidget *widget)    : QAccessibleWidgetEx(widget, Table){    Q_ASSERT(qobject_cast<QCalendarWidget *>(widget));}QVariant QAccessibleCalendarWidget::invokeMethodEx(QAccessible::Method, int, const QVariantList &){    return QVariant();}int QAccessibleCalendarWidget::childCount() const{   return calendarWidget()->isNavigationBarVisible() ? 2 : 1;}int QAccessibleCalendarWidget::indexOfChild(const QAccessibleInterface *child) const{    if (!child || !child->object() || childCount() <= 0)        return -1;    if (qobject_cast<QAbstractItemView *>(child->object()))        return childCount();    return 1;}int QAccessibleCalendarWidget::navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const{    *target = 0;    if (entry <= 0 || entry > childCount())        return QAccessibleWidgetEx::navigate(relation, entry, target);    QWidget *targetWidget = 0;    switch (relation) {    case Child:        if (childCount() == 1) {            targetWidget = calendarView();        } else {            if (entry == 1)                targetWidget = navigationBar();            else                targetWidget = calendarView();        }        break;    case Up:        if (entry == 2)            targetWidget = navigationBar();        break;    case Down:        if (entry == 1 && childCount() == 2)            targetWidget = calendarView();        break;    default:        return QAccessibleWidgetEx::navigate(relation, entry, target);    }    *target = queryAccessibleInterface(targetWidget);    return *target ? 0: -1;}QRect QAccessibleCalendarWidget::rect(int child) const{    if (!calendarWidget()->isVisible() || child > childCount())        return QRect();    if (child == 0)        return QAccessibleWidgetEx::rect(child);    QWidget *childWidget = 0;    if (childCount() == 2)        childWidget = child == 1 ? navigationBar() : calendarView();    else        childWidget = calendarView();    return QRect(childWidget->mapToGlobal(QPoint(0, 0)), childWidget->size());}int QAccessibleCalendarWidget::childAt(int x, int y) const{    const QPoint globalTargetPos = QPoint(x, y);    if (!rect(0).contains(globalTargetPos))        return -1;    if (rect(1).contains(globalTargetPos))        return 1;    if (rect(2).contains(globalTargetPos))        return 2;    return 0;}QCalendarWidget *QAccessibleCalendarWidget::calendarWidget() const{    return static_cast<QCalendarWidget *>(object());}QAbstractItemView *QAccessibleCalendarWidget::calendarView() const{    foreach (QObject *child, calendarWidget()->children()) {        if (child->objectName() == QLatin1String("qt_calendar_calendarview"))            return static_cast<QAbstractItemView *>(child);    }    return 0;}QWidget *QAccessibleCalendarWidget::navigationBar() const{    foreach (QObject *child, calendarWidget()->children()) {        if (child->objectName() == QLatin1String("qt_calendar_navigationbar"))            return static_cast<QWidget *>(child);    }    return 0;}#endif // QT_NO_CALENDARWIDGET#ifndef QT_NO_DOCKWIDGETQAccessibleDockWidget::QAccessibleDockWidget(QWidget *widget)    : QAccessibleWidgetEx(widget, Window){}int QAccessibleDockWidget::navigate(RelationFlag relation, int entry, QAccessibleInterface **iface) const{    if (relation == Child) {        if (entry == 1) {            *iface = new QAccessibleTitleBar(dockWidget());            return 0;        } else if (entry == 2) {            if (dockWidget()->widget())                *iface = QAccessible::queryAccessibleInterface(dockWidget()->widget());            return 0;        }        *iface = 0;        return -1;    }    return QAccessibleWidgetEx::navigate(relation, entry, iface);}int QAccessibleDockWidget::childAt(int x, int y) const{    for (int i = childCount(); i >= 0; --i) {        if (rect(i).contains(x,y))            return i;    }    return -1;}int QAccessibleDockWidget::childCount() const{    return dockWidget()->widget() ? 2 : 1;}int QAccessibleDockWidget::indexOfChild(const QAccessibleInterface *child) const{    if (child) {        if (qobject_cast<QDockWidget *>(child->object()) == dockWidget() && child->role(0) == TitleBar) {            return 1;        } else {            return 2;   //###        }    }    return -1;}QAccessible::Role QAccessibleDockWidget::role(int child) const{    switch (child) {        case 0:            return Window;        case 1:            return TitleBar;        case 2:            //###            break;        default:            break;    }    return NoRole;}QAccessible::State QAccessibleDockWidget::state(int child) const{    //### mark tabified widgets as invisible    return QAccessibleWidgetEx::state(child);}QRect QAccessibleDockWidget::rect (int child ) const{    QRect rect;    bool mapToGlobal = true;    if (child == 0) {        if (dockWidget()->isFloating()) {            rect = dockWidget()->frameGeometry();            mapToGlobal = false;        } else {            rect = dockWidget()->rect();        }    }else if (child == 1) {        QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());        rect = layout->titleArea();    }else if (child == 2) {        if (dockWidget()->widget())            rect = dockWidget()->widget()->geometry();    }    if (rect.isNull())        return rect;    if (mapToGlobal)        rect.moveTopLeft(dockWidget()->mapToGlobal(rect.topLeft()));    return rect;}QVariant QAccessibleDockWidget::invokeMethodEx(QAccessible::Method, int, const QVariantList &){    return QVariant();}QDockWidget *QAccessibleDockWidget::dockWidget() const{    return static_cast<QDockWidget *>(object());}//////      QAccessibleTitleBar////QAccessibleTitleBar::QAccessibleTitleBar(QDockWidget *widget)    : m_dockWidget(widget){}int QAccessibleTitleBar::navigate(RelationFlag relation, int entry, QAccessibleInterface **iface) const{    if (entry == 0 || relation == Self) {        *iface = new QAccessibleTitleBar(dockWidget());        return 0;    }    switch (relation) {    case Child:    case FocusChild:        if (entry >= 1) {            QDockWidgetLayout *layout = dockWidgetLayout();            int index = 1;            int role;            for (role = QDockWidgetLayout::CloseButton; role <= QDockWidgetLayout::FloatButton; ++role) {                QWidget *w = layout->widget((QDockWidgetLayout::Role)role);                if (!w->isVisible())                    continue;                if (index == entry)                    break;                ++index;            }            *iface = 0;            return role > QDockWidgetLayout::FloatButton ? -1 : index;        }        break;    case Ancestor:        {        QAccessibleDockWidget *target = new QAccessibleDockWidget(dockWidget());        int index;        if (entry == 1) {            *iface = target;            return 0;        }        index = target->navigate(Ancestor, entry - 1, iface);        delete target;        return index;        break;}    case Sibling:        return navigate(Child, entry, iface);        break;    default:        break;    }    *iface = 0;    return -1;}QAccessible::Relation QAccessibleTitleBar::relationTo(int /*child*/,  const QAccessibleInterface * /*other*/, int /*otherChild*/) const{    return Unrelated;   //###}int QAccessibleTitleBar::indexOfChild(const QAccessibleInterface * /*child*/) const{    return -1;}int QAccessibleTitleBar::childCount() const{    QDockWidgetLayout *layout = dockWidgetLayout();    int count = 0;    for (int role = QDockWidgetLayout::CloseButton; role <= QDockWidgetLayout::FloatButton; ++role) {        QWidget *w = layout->widget((QDockWidgetLayout::Role)role);        if (w && w->isVisible())            ++count;    }    return count;}QString QAccessibleTitleBar::text(Text t, int child) const{    if (!child) {        if (t == Value) {            return dockWidget()->windowTitle();        }    }    return QString();}QAccessible::State QAccessibleTitleBar::state(int child) const{    QAccessible::State state = Normal;    if (child) {        QDockWidgetLayout *layout = dockWidgetLayout();        QAbstractButton *b = static_cast<QAbstractButton *>(layout->widget((QDockWidgetLayout::Role)child));        if (b) {            if (b->isDown())                state |= Pressed;        }    } else {        QDockWidget *w = dockWidget();        if (w->testAttribute(Qt::WA_WState_Visible) == false)            state |= Invisible;        if (w->focusPolicy() != Qt::NoFocus && w->isActiveWindow())            state |= Focusable;        if (w->hasFocus())            state |= Focused;        if (!w->isEnabled())            state |= Unavailable;    }    return state;}QRect QAccessibleTitleBar::rect (int child ) const{    bool mapToGlobal = true;    QRect rect;    if (child == 0) {        if (dockWidget()->isFloating()) {            rect = dockWidget()->frameGeometry();            QPoint globalPos = dockWidget()->mapToGlobal( dockWidget()->widget()->rect().topLeft() );            globalPos.ry()--;            rect.setBottom(globalPos.y());            mapToGlobal = false;        } else {            QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());            rect = layout->titleArea();        }    }else if (child >= 1 && child <= childCount()) {        QDockWidgetLayout *layout = dockWidgetLayout();        int index = 1;        for (int role = QDockWidgetLayout::CloseButton; role <= QDockWidgetLayout::FloatButton; ++role) {            QWidget *w = layout->widget((QDockWidgetLayout::Role)role);            if (!w || !w->isVisible())                continue;            if (index == child) {                rect = w->geometry();                break;            }            ++index;        }    }    if (rect.isNull())        return rect;    if (mapToGlobal)        rect.moveTopLeft(dockWidget()->mapToGlobal(rect.topLeft()));    return rect;}int QAccessibleTitleBar::childAt(int x, int y) const{    for (int i = childCount(); i >= 0; --i) {        if (rect(i).contains(x,y))            return i;    }    return -1;}QObject *QAccessibleTitleBar::object() const{    return m_dockWidget;}QDockWidgetLayout *QAccessibleTitleBar::dockWidgetLayout() const{    return qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());}QDockWidget *QAccessibleTitleBar::dockWidget() const{    return m_dockWidget;}QString QAccessibleTitleBar::actionText(int action, Text t, int child) const{    QString str;    if (child >= 1 && child <= childCount()) {        if (t == Name) {            switch (action) {            case Press:            case DefaultAction:                if (child == QDockWidgetLayout::CloseButton) {                    str = QDockWidget::tr("Close");                } else if (child == QDockWidgetLayout::FloatButton) {

⌨️ 快捷键说明

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