📄 qaccessiblewidget.cpp
字号:
case Name: tx = ((QButton*)widget())->text(); if ( tx.isEmpty() && widget()->inherits("QToolButton") ) tx = ((QToolButton*)widget())->textLabel(); if ( tx.isEmpty() ) tx = buddyString( widget() ); return stripAmp( tx ); default: break; } return tx;}/*! \reimp */QAccessible::State QAccessibleButton::state( int control ) const{ int state = QAccessibleWidget::state( control ); QButton *b = (QButton*)widget(); if ( b->state() == QButton::On ) state |= Checked; else if ( b->state() == QButton::NoChange ) state |= Mixed; if ( b->isDown() ) state |= Pressed; if ( b->inherits( "QPushButton" ) ) { QPushButton *pb = (QPushButton*)b; if ( pb->isDefault() ) state |= Default; } return (State)state;}/*! \class QAccessibleRangeControl qaccessiblewidget.h \brief The QAccessibleRangeControl class implements the QAccessibleInterface for range controls.*//*! Constructs a QAccessibleRangeControl object for \a o. \a role, \a name, \a description, \a help, \a defAction and \a accelerator are propagated to the QAccessibleWidget constructor.*/QAccessibleRangeControl::QAccessibleRangeControl( QObject *o, Role role, QString name, QString description, QString help, QString defAction, QString accelerator ): QAccessibleWidget( o, role, name, description, QString::null, help, defAction, accelerator ){}/*! \reimp */QString QAccessibleRangeControl::text( Text t, int control ) const{ QString tx = QAccessibleWidget::text( t, control ); if ( !!tx ) return stripAmp(tx); switch ( t ) { case Name: return stripAmp( buddyString( widget() ) ); case Accelerator: tx = hotKey( buddyString( widget() ) ); if ( !!tx ) return "Alt + "+tx; break; case Value: if ( widget()->inherits( "QSlider" ) ) { QSlider *s = (QSlider*)widget(); return QString::number( s->value() ); } else if ( widget()->inherits( "QDial" ) ) { QDial *d = (QDial*)widget(); return QString::number( d->value() ); } else if ( widget()->inherits( "QSpinBox" ) ) { QSpinBox *s = (QSpinBox*)widget(); return s->text(); } else if ( widget()->inherits( "QScrollBar" ) ) { QScrollBar *s = (QScrollBar*)widget(); return QString::number( s->value() ); } else if ( widget()->inherits( "QProgressBar" ) ) { QProgressBar *p = (QProgressBar*)widget(); return QString::number( p->progress() ); } default: break; } return tx;}/*! \class QAccessibleSpinWidget qaccessiblewidget.h \brief The QAccessibleText class implements the QAccessibleInterface for up/down widgets.*//*! Constructs a QAccessibleSpinWidget object for \a o.*/QAccessibleSpinWidget::QAccessibleSpinWidget( QObject *o ): QAccessibleRangeControl( o, SpinBox ){}/*! \reimp */int QAccessibleSpinWidget::controlAt( int x, int y ) const{ QPoint tl = widget()->mapFromGlobal( QPoint( x, y ) ); if ( ((QSpinWidget*)widget())->upRect().contains( tl ) ) return 1; else if ( ((QSpinWidget*)widget())->downRect().contains( tl ) ) return 2; return -1;}/*! \reimp */QRect QAccessibleSpinWidget::rect( int control ) const{ QRect rect; switch( control ) { case 1: rect = ((QSpinWidget*)widget())->upRect(); break; case 2: rect = ((QSpinWidget*)widget())->downRect(); break; default: rect = widget()->rect(); } QPoint tl = widget()->mapToGlobal( QPoint( 0, 0 ) ); return QRect( tl.x() + rect.x(), tl.y() + rect.y(), rect.width(), rect.height() );}/*! \reimp */int QAccessibleSpinWidget::navigate( NavDirection direction, int startControl ) const{ if ( direction != NavFirstChild && direction != NavLastChild && direction != NavFocusChild && !startControl ) return QAccessibleWidget::navigate( direction, startControl ); switch ( direction ) { case NavFirstChild: return 1; case NavLastChild: return 2; case NavNext: case NavDown: startControl += 1; if ( startControl > 2 ) return -1; return startControl; case NavPrevious: case NavUp: startControl -= 1; if ( startControl < 1 ) return -1; return startControl; default: break; } return -1;}/*! \reimp */int QAccessibleSpinWidget::childCount() const{ return 2;}/*! \reimp */QRESULT QAccessibleSpinWidget::queryChild( int /*control*/, QAccessibleInterface **iface ) const{ *iface = 0; return QS_FALSE;}/*! \reimp */QString QAccessibleSpinWidget::text( Text t, int control ) const{ switch ( t ) { case Name: switch ( control ) { case 1: return QSpinWidget::tr("More"); case 2: return QSpinWidget::tr("Less"); default: break; } break; case DefaultAction: switch( control ) { case 1: case 2: return QSpinWidget::tr("Press"); default: break; } break; default: break; } return QAccessibleRangeControl::text( t, control );}/*! \reimp */QAccessible::Role QAccessibleSpinWidget::role( int control ) const{ switch( control ) { case 1: return PushButton; case 2: return PushButton; default: break; } return QAccessibleRangeControl::role( control );}/*! \reimp */QAccessible::State QAccessibleSpinWidget::state( int control ) const{ int state = QAccessibleRangeControl::state( control ); switch( control ) { case 1: if ( !((QSpinWidget*)widget())->isUpEnabled() ) state |= Unavailable; return (State)state; case 2: if ( !((QSpinWidget*)widget())->isDownEnabled() ) state |= Unavailable; return (State)state; default: break; } return QAccessibleRangeControl::state( control );}/*! \reimp */bool QAccessibleSpinWidget::doDefaultAction( int control ){ switch( control ) { case 1: if ( !((QSpinWidget*)widget())->isUpEnabled() ) return FALSE; ((QSpinWidget*)widget())->stepUp(); return TRUE; case 2: if ( !((QSpinWidget*)widget())->isDownEnabled() ) return FALSE; ((QSpinWidget*)widget())->stepDown(); return TRUE; default: break; } return QAccessibleRangeControl::doDefaultAction( control );}/*! \class QAccessibleScrollBar qaccessiblewidget.h \brief The QAccessibleScrollBar class implements the QAccessibleInterface for scroll bars.*//*! Constructs a QAccessibleScrollBar object for \a o. \a name, \a description, \a help, \a defAction and \a accelerator are propagated to the QAccessibleRangeControl constructor.*/QAccessibleScrollBar::QAccessibleScrollBar( QObject *o, QString name, QString description, QString help, QString defAction, QString accelerator ): QAccessibleRangeControl( o, ScrollBar, name, description, help, defAction, accelerator ){ Q_ASSERT( o->inherits("QScrollBar" ) );}/*! Returns the scroll bar. */QScrollBar *QAccessibleScrollBar::scrollBar() const{ return (QScrollBar*)widget();}/*! \reimp */int QAccessibleScrollBar::controlAt( int x, int y ) const{ for ( int i = 1; i <= childCount(); i++ ) { if ( rect(i).contains( x,y ) ) return i; } return 0;}/*! \reimp */QRect QAccessibleScrollBar::rect( int control ) const{ QRect rect; QRect srect = scrollBar()->sliderRect(); int sz = scrollBar()->style().pixelMetric( QStyle::PM_ScrollBarExtent, scrollBar() ); switch ( control ) { case 1: if ( scrollBar()->orientation() == Vertical ) rect = QRect( 0, 0, sz, sz ); else rect = QRect( 0, 0, sz, sz ); break; case 2: if ( scrollBar()->orientation() == Vertical ) rect = QRect( 0, sz, sz, srect.y() - sz ); else rect = QRect( sz, 0, srect.x() - sz, sz ); break; case 3: rect = srect; break; case 4: if ( scrollBar()->orientation() == Vertical ) rect = QRect( 0, srect.bottom(), sz, scrollBar()->rect().height() - srect.bottom() - sz ); else rect = QRect( srect.right(), 0, scrollBar()->rect().width() - srect.right() - sz, sz ) ; break; case 5: if ( scrollBar()->orientation() == Vertical ) rect = QRect( 0, scrollBar()->rect().height() - sz, sz, sz ); else rect = QRect( scrollBar()->rect().width() - sz, 0, sz, sz ); break; default: return QAccessibleRangeControl::rect( control ); } QPoint tp = scrollBar()->mapToGlobal( QPoint( 0,0 ) ); return QRect( tp.x() + rect.x(), tp.y() + rect.y(), rect.width(), rect.height() );}/*! \reimp */int QAccessibleScrollBar::navigate( NavDirection direction, int startControl ) const{ if ( direction != NavFirstChild && direction != NavLastChild && direction != NavFocusChild && !startControl ) return QAccessibleRangeControl::navigate( direction, startControl ); switch ( direction ) { case NavFirstChild: return 1; case NavLastChild: return 5; case NavNext: return startControl == childCount() ? -1 : startControl + 1; case NavDown: if ( scrollBar()->orientation() == Horizontal ) break; return startControl == childCount() ? -1 : startControl + 1; case NavRight: if ( scrollBar()->orientation() == Vertical ) break; return startControl == childCount() ? -1 : startControl + 1; case NavPrevious: return startControl == 1 ? -1 : startControl - 1; case NavUp: if ( scrollBar()->orientation() == Horizontal ) break; return startControl == 1 ? -1 : startControl - 1; case NavLeft: if ( scrollBar()->orientation() == Vertical ) break; return startControl == 1 ? -1 : startControl - 1; default: break; } return -1;}/*! \reimp */int QAccessibleScrollBar::childCount() const{ return 5;}/*! \reimp */QRESULT QAccessibleScrollBar::queryChild( int /*control*/, QAccessibleInterface **iface ) const{ *iface = 0; return QS_FALSE;}/*! \reimp */QString QAccessibleScrollBar::text( Text t, int control ) const{ switch ( t ) { case Value: if ( control && control != 3 ) return QString::null; break; case Name: switch ( control ) { case 1: return QScrollBar::tr("Line up"); case 2: return QScrollBar::tr("Page up"); case 3: return QScrollBar::tr("Position"); case 4: return QScrollBar::tr("Page down"); case 5: return QScrollBar::tr("Line down"); } break; case DefaultAction: if ( control != 3 ) return QScrollBar::tr("Press"); break; default: break; } return QAccessibleRangeControl::text( t, control );}/*! \reimp */QAccessible::Role QAccessibleScrollBar::role( int control ) const{ switch ( control ) { case 1: case 2: return PushButton; case 3: return Indicator; case 4: case 5: return PushButton; default: return ScrollBar; }}/*! \reimp */bool QAccessibleScrollBar::doDefaultAction( int control ){ switch ( control ) { case 1: scrollBar()->subtractLine(); return TRUE; case 2: scrollBar()->subtractPage(); return TRUE; case 4: scrollBar()->addPage(); return TRUE; case 5: scrollBar()->addLine(); return TRUE; default: return FALSE; }}/*! \class QAccessibleSlider qaccessiblewidget.h \brief The QAccessibleScrollBar class implements the QAccessibleInterface for sliders.*//*! Constructs a QAccessibleScrollBar object for \a o. \a name, \a description, \a help, \a defAction and \a accelerator are propagated to the QAccessibleRangeControl constructor.*/QAccessibleSlider::QAccessibleSlider( QObject *o, QString name, QString description, QString help, QString defAction, QString accelerator ): QAccessibleRangeControl( o, ScrollBar, name, description, help, defAction, accelerator ){ Q_ASSERT( o->inherits("QSlider" ) );}/*! Returns the slider. */QSlider *QAccessibleSlider::slider() const{ return (QSlider*)widget();}/*! \reimp */int QAccessibleSlider::controlAt( int x, int y ) const{ for ( int i = 1; i <= childCount(); i++ ) { if ( rect(i).contains( x,y ) ) return i; } return 0;}/*! \reimp */QRect QAccessibleSlider::rect( int control ) const{ QRect rect; QRect srect = slider()->sliderRect(); switch ( control ) { case 1: if ( slider()->orientation() == Vertical ) rect = QRect( 0, 0, slider()->width(), srect.y() ); else rect = QRect( 0, 0, srect.x(), slider()->height() ); break; case 2: rect = srect; break; case 3: if ( slider()->orientation() == Vertical ) rect = QRect( 0, srect.y() + srect.height(), slider()->width(), slider()->height()- srect.y() - srect.height() ); else rect = QRect( srect.x() + srect.width(), 0, slider()->width() - srect.x() - srect.width(), slider()->height() ); break; default: return QAccessibleRangeControl::rect( control ); } QPoint tp = slider()->mapToGlobal( QPoint( 0,0 ) ); return QRect( tp.x() + rect.x(), tp.y() + rect.y(), rect.width(), rect.height() );}/*! \reimp */int QAccessibleSlider::navigate( NavDirection direction, int startControl ) const{ if ( direction != NavFirstChild && direction != NavLastChild && direction != NavFocusChild && !startControl ) return QAccessibleRangeControl::navigate( direction, startControl ); switch ( direction ) { case NavFirstChild: return 1; case NavLastChild: return childCount(); case NavNext: return startControl == childCount() ? -1 : startControl + 1; case NavDown: if ( slider()->orientation() == Horizontal ) break; return startControl == childCount() ? -1 : startControl + 1; case NavRight: if ( slider()->orientation() == Vertical ) break; return startControl == childCount() ? -1 : startControl + 1; case NavPrevious: return startControl == 1 ? -1 : startControl - 1; case NavUp: if ( slider()->orientation() == Horizontal ) break; return startControl == 1 ? -1 : startControl - 1; case NavLeft: if ( slider()->orientation() == Vertical ) break; return startControl == 1 ? -1 : startControl - 1; default: break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -