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

📄 qaccessiblemenu.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        return MenuBar;    QAction *action = menuBar()->actions()[child-1];    if (action && action->isSeparator())        return Separator;    return MenuItem;}QAccessible::State QAccessibleMenuBar::state(int child) const{    State s = QAccessibleWidgetEx::state(child);    if (!child)        return s;    QAction *action = menuBar()->actions().value(child-1, 0);    if (!action)        return s;    if (menuBar()->style()->styleHint(QStyle::SH_Menu_MouseTracking))        s |= HotTracked;    if (action->isSeparator() || !action->isEnabled())        s |= Unavailable;    if (menuBar()->activeAction() == action)        s |= Focused;    return s;}QString QAccessibleMenuBar::actionText(int action, QAccessible::Text text, int child) const{    if (action == QAccessible::DefaultAction && child && text == QAccessible::Name) {        QAction *a = menuBar()->actions().value(child-1, 0);        if (!a || a->isSeparator())            return QString();        if (a->menu()) {            if (a->menu()->isVisible())                return QMenu::tr("Close");            return QMenu::tr("Open");        }        return QMenu::tr("Execute");    }    return QAccessibleWidgetEx::actionText(action, text, child);}bool QAccessibleMenuBar::doAction(int act, int child, const QVariantList &){    if (act != !child)        return false;    QAction *action = menuBar()->actions().value(child-1, 0);    if (!action || !action->isEnabled())        return false;    if (action->menu() && action->menu()->isVisible())        action->menu()->hide();    else        menuBar()->setActiveAction(action);    return true;}#endif // QT_NO_MENUBARQAccessibleMenuItem::QAccessibleMenuItem(QWidget *owner, QAction *action) : m_action(action), m_owner(owner){}QAccessibleMenuItem::~QAccessibleMenuItem(){}int QAccessibleMenuItem::childAt(int x, int y ) const{    for (int i = childCount(); i >= 0; --i) {        if (rect(i).contains(x,y))            return i;    }    return -1;}int QAccessibleMenuItem::childCount() const{    return m_action->menu() ? 1 : 0;}QString QAccessibleMenuItem::actionText(int action, Text text, int child ) const{    if (text == Name && child == 0) {        switch (action) {        case Press:        case DefaultAction:            return QMenu::tr("Execute");            break;        default:            break;        }    }    return QString();}bool QAccessibleMenuItem::doAction(int action, int child, const QVariantList & /*params = QVariantList()*/ ){    if ((action == Press || action == DefaultAction) && child == 0) {        m_action->trigger();        return true;    }    return false;}int QAccessibleMenuItem::indexOfChild( const QAccessibleInterface * child ) const{    if (child->role(0) == PopupMenu && child->object() == m_action->menu())        return 1;    return -1;}bool QAccessibleMenuItem::isValid() const{    return m_action ? true : false;}int QAccessibleMenuItem::navigate(RelationFlag relation, int entry, QAccessibleInterface ** target ) const{    int ret = -1;    if (entry < 0) {        *target = 0;        return ret;    }    if (relation == Self || entry == 0) {        *target = new QAccessibleMenuItem(owner(), action());        return 0;    }    switch (relation) {    case Child:        if (entry <= childCount()) {            *target = new QAccessibleMenu(action()->menu());            ret = 0;        }        break;    case Ancestor:{        QWidget *parent = owner();        QAccessibleInterface *ancestor = parent ? QAccessible::queryAccessibleInterface(parent) : 0;        if (ancestor) {            if (entry == 1) {                *target = ancestor;                ret = 0;            } else {                ret = ancestor->navigate(Ancestor, entry - 1, target);                delete ancestor;            }        }        break;}    case Up:    case Down:{        QAccessibleInterface *parent = 0;        int ent = navigate(Ancestor, 1, &parent);        if (ent == 0) {            int index = parent->indexOfChild(this);            if (index != -1) {                index += (relation == Down ? +1 : -1);                ret = parent->navigate(Child, index, target);            }        }        delete parent;        break;}    case Sibling: {        QAccessibleInterface *parent = 0;        int ent = navigate(Ancestor, 1, &parent);        if (ent == 0) {            ret = parent->navigate(Child, entry, target);        }        delete parent;        break;}    default:        break;    }    if (ret == -1)        *target = 0;    return ret;}QObject *QAccessibleMenuItem::object() const{    return m_action;}QRect QAccessibleMenuItem::rect (int child ) const{    QRect rect;    if (child == 0) {        QWidget *own = owner();#ifndef QT_NO_MENUBAR        if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(own)) {            rect = menuBar->actionGeometry(m_action);            QPoint globalPos = menuBar->mapToGlobal(QPoint(0,0));            rect = rect.translated(globalPos);        } else#endif // QT_NO_MENUBAR        if (QMenu *menu = qobject_cast<QMenu*>(own)) {            rect = menu->actionGeometry(m_action);            QPoint globalPos = menu->mapToGlobal(QPoint(0,0));            rect = rect.translated(globalPos);        }    } else if (child == 1) {        QMenu *menu = m_action->menu();        if (menu) {            rect = menu->rect();            QPoint globalPos = menu->mapToGlobal(QPoint(0,0));            rect = rect.translated(globalPos);        }    }    return rect;}QAccessible::Relation QAccessibleMenuItem::relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const{    if (other->object() == owner()) {        return Child;    }    Q_UNUSED(child)    Q_UNUSED(other)    Q_UNUSED(otherChild)    // ###    return Unrelated;}QAccessible::Role QAccessibleMenuItem::role(int /*child*/ ) const{    return m_action->isSeparator() ? Separator :MenuItem;}void QAccessibleMenuItem::setText ( Text /*t*/, int /*child*/, const QString & /*text */){}QAccessible::State QAccessibleMenuItem::state ( int child ) const{    QAccessible::State s = Unavailable;    if (child == 0) {        s = Normal;        QWidget *own = owner();        if (own->testAttribute(Qt::WA_WState_Visible) == false || m_action->isVisible() == false) {            s |= Invisible;        }        if (QMenu *menu = qobject_cast<QMenu*>(own)) {            if (menu->activeAction() == m_action)                s |= Focused;#ifndef QT_NO_MENUBAR        } else if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(own)) {            if (menuBar->activeAction() == m_action)                s |= Focused;#endif        }        if (own->style()->styleHint(QStyle::SH_Menu_MouseTracking))            s |= HotTracked;        if (m_action->isSeparator() || !m_action->isEnabled())            s |= Unavailable;        if (m_action->isChecked())            s |= Checked;    } else if (child == 1) {        QMenu *menu = m_action->menu();        if (menu) {            QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(menu);            s = iface->state(0);            delete iface;        }    }    return s;}QString QAccessibleMenuItem::text ( Text t, int child ) const{    QString str;    switch (t) {    case Name:        if (child == 0) {            str = m_action->text();        } else if (child == 1) {            QMenu *m = m_action->menu();            if (m)                str = m->title();        }        str = qt_accStripAmp(str);        break;    case Accelerator:        if (child == 0) {#ifndef QT_NO_SHORTCUT            QKeySequence key = m_action->shortcut();            if (!key.isEmpty()) {                str = key.toString();            } else#endif            {                str = qt_accHotKey(m_action->text());            }        }        break;    default:        break;    }    return str;}int QAccessibleMenuItem::userActionCount ( int /*child*/ ) const{    return 0;}QAction *QAccessibleMenuItem::action() const{    return m_action;}QWidget *QAccessibleMenuItem::owner() const{    return m_owner;}#endif // QT_NO_MENU#endif // QT_NO_ACCESSIBILITY

⌨️ 快捷键说明

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