📄 qaccessiblewidget.cpp
字号:
QAccessibleComboBox::QAccessibleComboBox( QObject *o ): QAccessibleWidget( o, ComboBox ){ Q_ASSERT(o->inherits("QComboBox"));}/*! Returns the combo box.*/QComboBox *QAccessibleComboBox::comboBox() const{ return (QComboBox*)object();}/*! \reimp */int QAccessibleComboBox::controlAt( int x, int y ) const{ for ( int i = childCount(); i >= 0; --i ) { if ( rect( i ).contains( x, y ) ) return i; } return -1;}/*! \reimp */QRect QAccessibleComboBox::rect( int control ) const{ QPoint tp; QRect r; switch( control ) { case 1: if ( comboBox()->editable() ) { tp = comboBox()->lineEdit()->mapToGlobal( QPoint( 0,0 ) ); r = comboBox()->lineEdit()->rect(); } else { tp = comboBox()->mapToGlobal( QPoint( 0,0 ) ); r = comboBox()->style().querySubControlMetrics( QStyle::CC_ComboBox, comboBox(), QStyle::SC_ComboBoxEditField ); } break; case 2: tp = comboBox()->mapToGlobal( QPoint( 0,0 ) ); r = comboBox()->style().querySubControlMetrics( QStyle::CC_ComboBox, comboBox(), QStyle::SC_ComboBoxArrow ); break; default: return QAccessibleWidget::rect( control ); } return QRect( tp.x() + r.x(), tp.y() + r.y(), r.width(), r.height() ); }/*! \reimp */int QAccessibleComboBox::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; break; case NavLastChild: return childCount(); break; case NavNext: case NavRight: return startControl + 1 > childCount() ? -1 : startControl + 1; case NavPrevious: case NavLeft: return startControl -1 < 1 ? -1 : startControl - 1; default: break; } return -1;}/*! \reimp */int QAccessibleComboBox::childCount() const{ return 2;}/*! \reimp */QRESULT QAccessibleComboBox::queryChild( int /*control*/, QAccessibleInterface **iface ) const{ *iface = 0; return QS_FALSE;}/*! \reimp */QString QAccessibleComboBox::text( Text t, int control ) const{ QString str; switch ( t ) { case Name: if ( control < 2 ) return stripAmp( buddyString( comboBox() ) ); return QComboBox::tr("Open"); case Accelerator: if ( control < 2 ) { str = hotKey( buddyString( comboBox() ) ); if ( !!str ) return "Alt + " + str; return str; } return QComboBox::tr("Alt + Down Arrow" ); case Value: if ( control < 2 ) { if ( comboBox()->editable() ) return comboBox()->lineEdit()->text(); return comboBox()->currentText(); } break; case DefaultAction: if ( control == 2 ) return QComboBox::tr("Open"); break; default: str = QAccessibleWidget::text( t, 0 ); break; } return str;}/*! \reimp */QAccessible::Role QAccessibleComboBox::role( int control ) const{ switch ( control ) { case 0: return ComboBox; case 1: if ( comboBox()->editable() ) return EditableText; return StaticText; case 2: return PushButton; default: return List; } }/*! \reimp */QAccessible::State QAccessibleComboBox::state( int /*control*/ ) const{ return QAccessibleWidget::state( 0 );}/*! \reimp */bool QAccessibleComboBox::doDefaultAction( int control ){ if ( control != 2 ) return FALSE; comboBox()->popup(); return TRUE;}/*! \class QAccessibleTitleBar qaccessiblewidget.h \brief The QAccessibleTitleBar class implements the QAccessibleInterface for title bars.*//*! Constructs a QAccessibleComboBox object for \a o.*/QAccessibleTitleBar::QAccessibleTitleBar( QObject *o ): QAccessibleWidget( o, ComboBox ){ Q_ASSERT(o->inherits("QTitleBar"));}/*! Returns the title bar.*/QTitleBar *QAccessibleTitleBar::titleBar() const{ return (QTitleBar*)object();}/*! \reimp */int QAccessibleTitleBar::controlAt( int x, int y ) const{ int ctrl = titleBar()->style().querySubControl( QStyle::CC_TitleBar, titleBar(), titleBar()->mapFromGlobal( QPoint( x,y ) ) ); switch ( ctrl ) { case QStyle::SC_TitleBarSysMenu: return 1; case QStyle::SC_TitleBarLabel: return 2; case QStyle::SC_TitleBarMinButton: return 3; case QStyle::SC_TitleBarMaxButton: return 4; case QStyle::SC_TitleBarCloseButton: return 5; default: break; } return 0;}/*! \reimp */QRect QAccessibleTitleBar::rect( int control ) const{ if ( !control ) return QAccessibleWidget::rect( control ); QRect r; switch ( control ) { case 1: r = titleBar()->style().querySubControlMetrics( QStyle::CC_TitleBar, titleBar(), QStyle::SC_TitleBarSysMenu ); break; case 2: r = titleBar()->style().querySubControlMetrics( QStyle::CC_TitleBar, titleBar(), QStyle::SC_TitleBarLabel ); break; case 3: r = titleBar()->style().querySubControlMetrics( QStyle::CC_TitleBar, titleBar(), QStyle::SC_TitleBarMinButton ); break; case 4: r = titleBar()->style().querySubControlMetrics( QStyle::CC_TitleBar, titleBar(), QStyle::SC_TitleBarMaxButton ); break; case 5: r = titleBar()->style().querySubControlMetrics( QStyle::CC_TitleBar, titleBar(), QStyle::SC_TitleBarCloseButton ); break; default: break; } QPoint tp = titleBar()->mapToGlobal( QPoint( 0,0 ) ); return QRect( tp.x() + r.x(), tp.y() + r.y(), r.width(), r.height() );}/*! \reimp */int QAccessibleTitleBar::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; break; case NavLastChild: return childCount(); break; case NavNext: case NavRight: return startControl + 1 > childCount() ? -1 : startControl + 1; case NavPrevious: case NavLeft: return startControl -1 < 1 ? -1 : startControl - 1; default: break; } return -1;}/*! \reimp */int QAccessibleTitleBar::childCount() const{ return 5;}/*! \reimp */QRESULT QAccessibleTitleBar::queryChild( int /*control*/, QAccessibleInterface **iface ) const{ *iface = 0; return QS_FALSE;}/*! \reimp */QString QAccessibleTitleBar::text( Text t, int control ) const{ QString str = QAccessibleWidget::text( t, control ); if ( !!str ) return str; switch ( t ) { case Name: switch ( control ) { case 1: return QTitleBar::tr("System"); case 3: if ( titleBar()->window()->isMinimized() ) return QTitleBar::tr("Restore up"); return QTitleBar::tr("Minimize"); case 4: if ( titleBar()->window()->isMaximized() ) return QTitleBar::tr("Restore down"); return QTitleBar::tr("Maximize"); case 5: return QTitleBar::tr("Close"); default: break; } break; case Value: if ( !control || control == 2 ) return titleBar()->window()->caption(); break; case DefaultAction: if ( control > 2 ) return QTitleBar::tr("Press"); break; case Description: switch ( control ) { case 1: return QTitleBar::tr("Contains commands to manipulate the window"); case 3: if ( titleBar()->window()->isMinimized() ) return QTitleBar::tr("Puts a minimized back to normal"); return QTitleBar::tr("Moves the window out of the way"); case 4: if ( titleBar()->window()->isMaximized() ) return QTitleBar::tr("Puts a maximized window back to normal"); return QTitleBar::tr("Makes the window full screen"); case 5: return QTitleBar::tr("Closes the window"); default: return QTitleBar::tr("Displays the name of the window and contains controls to manipulate it"); } default: break; } return str;}/*! \reimp */QAccessible::Role QAccessibleTitleBar::role( int control ) const{ switch ( control ) { case 1: case 3: case 4: case 5: return PushButton; default: return TitleBar; }}/*! \reimp */QAccessible::State QAccessibleTitleBar::state( int control ) const{ return QAccessibleWidget::state( control );}/*! \reimp */bool QAccessibleTitleBar::doDefaultAction( int control ){ switch ( control ) { case 3: if ( titleBar()->window()->isMinimized() ) titleBar()->window()->showNormal(); else titleBar()->window()->showMinimized(); return TRUE; case 4: if ( titleBar()->window()->isMaximized() ) titleBar()->window()->showNormal(); else titleBar()->window()->showMaximized(); return TRUE; case 5: titleBar()->window()->close(); return TRUE; default: break; } return FALSE;}/*! \class QAccessibleViewport qaccessiblewidget.h \brief The QAccessibleViewport class hides the viewport of scrollviews for accessibility. \internal*/QAccessibleViewport::QAccessibleViewport( QObject *o, QObject *sv ) : QAccessibleWidget( o ){ Q_ASSERT( sv->inherits("QScrollView") ); scrollview = (QScrollView*)sv;}QAccessibleScrollView *QAccessibleViewport::scrollView() const{ QAccessibleInterface *iface = 0; queryAccessibleInterface( scrollview, &iface ); Q_ASSERT(iface); return (QAccessibleScrollView *)iface;}int QAccessibleViewport::controlAt( int x, int y ) const{ int control = QAccessibleWidget::controlAt( x, y ); if ( control > 0 ) return control; QPoint p = widget()->mapFromGlobal( QPoint( x,y ) ); return scrollView()->itemAt( p.x(), p.y() );}QRect QAccessibleViewport::rect( int control ) const{ if ( !control ) return QAccessibleWidget::rect( control ); QRect rect = scrollView()->itemRect( control ); QPoint tl = widget()->mapToGlobal( QPoint( 0,0 ) ); return QRect( tl.x() + rect.x(), tl.y() + rect.y(), rect.width(), rect.height() );}int QAccessibleViewport::navigate( NavDirection direction, int startControl ) const{ if ( direction != NavFirstChild && direction != NavLastChild && direction != NavFocusChild && !startControl ) return QAccessibleWidget::navigate( direction, startControl ); // ### call itemUp/Down etc. here const int items = scrollView()->itemCount(); switch( direction ) { case NavFirstChild: return 1; case NavLastChild: return items; case NavNext: case NavDown: return startControl + 1 > items ? -1 : startControl + 1; case NavPrevious: case NavUp: return startControl - 1 < 1 ? -1 : startControl - 1; default: break; } return -1;}int QAccessibleViewport::childCount() const{ int widgets = QAccessibleWidget::childCount(); return widgets ? widgets : scrollView()->itemCount();}QString QAccessibleViewport::text( Text t, int control ) const{ return scrollView()->text( t, control );}bool QAccessibleViewport::doDefaultAction( int control ){ return scrollView()->doDefaultAction( control );}QAccessible::Role QAccessibleViewport::role( int control ) const{ return scrollView()->role( control );}QAccessible::State QAccessibleViewport::state( int control ) const{ return scrollView()->state( control );}bool QAccessibleViewport::setFocus( int control ){ return scrollView()->setFocus( control );}bool QAccessibleViewport::setSelected( int control, bool on, bool extend ){ return scrollView()->setSelected( control, on, extend );}void QAccessibleViewport::clearSelection(){ scrollView()->clearSelection();}QMemArray<int> QAccessibleViewport::selection() const{ return scrollView()->selection();}/*! \class QAccessibleScrollView qaccessiblewidget.h \brief The QAccessibleScrollView class implements the QAccessibleInterface for scrolled widgets.*//*! Constructs a QAccessibleScrollView object for \a o. \a role, \a description, \a value, \a help, \a defAction and \a accelerator are propagated to the QAccessibleWidget constructor.*/QAccessibleScrollView::QAccessibleScrollView( QObject *o, Role role, QString name, QString description, QString value, QString help, QString defAction, QString accelerator ) : QAccessibleWidget( o, role, name, description, value, help, defAction, accelerator ){}/*! \reimp */QString QAccessibleScrollView::text( Text t, int control ) const{ QString str = QAccessibleWidget::text( t, control ); if ( !!str ) return str; switch ( t ) { case Name: return buddyString( widget() ); default: break; } return str;}/*! Returns the ID of the item at viewport position \a x, \a y.*/int QAccessibleScrollView::itemAt( int /*x*/, int /*y*/ ) const{ return 0;}/*! Returns the location of the item with ID \a item in viewport coordinates.*/QRect QAccessibleScrollView::itemRect( int /*item*/ ) const{ return QRect();}/*! Returns the number of items.*/int QAccessibleScrollView::itemCount() const{ return 0;}/*! \class QAccessibleListBox qaccessiblewidget.h \brief The QAccessibleListBox class implements the QAccessibleInterface for list boxes.*//*! Constructs a QAccessibleListBox object for \a o. */QAccessibleListBox::QAccessibleListBox( QObject *o )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -