📄 complexwidgets.cpp
字号:
return 0;}int QAccessibleItemView::rowIndex(int childIndex){ int columnCount = itemView()->model()->columnCount(); if (!columnCount) return 0; return int(childIndex / columnCount);}int QAccessibleItemView::selectedRows(int maxRows, QList<int> *rows){ Q_ASSERT(rows); const QModelIndexList selRows = itemView()->selectionModel()->selectedRows(); int maxCount = qMin(selRows.count(), maxRows); for (int i = 0; i < maxCount; ++i) rows->append(selRows.at(i).row()); return maxCount;}int QAccessibleItemView::selectedColumns(int maxColumns, QList<int> *columns){ Q_ASSERT(columns); const QModelIndexList selColumns = itemView()->selectionModel()->selectedColumns(); int maxCount = qMin(selColumns.count(), maxColumns); for (int i = 0; i < maxCount; ++i) columns->append(selColumns.at(i).row()); return maxCount;}/* Qt widgets don't have a concept of a summary */QAccessibleInterface *QAccessibleItemView::summary(){ return 0;}bool QAccessibleItemView::isColumnSelected(int column){ return itemView()->selectionModel()->isColumnSelected(column, QModelIndex());}bool QAccessibleItemView::isRowSelected(int row){ return itemView()->selectionModel()->isRowSelected(row, QModelIndex());}bool QAccessibleItemView::isSelected(int row, int column){ return itemView()->selectionModel()->isSelected(index(row, column));}void QAccessibleItemView::selectRow(int row){ QItemSelectionModel *s = itemView()->selectionModel(); s->select(index(row, 0), QItemSelectionModel::Select | QItemSelectionModel::Rows);}void QAccessibleItemView::selectColumn(int column){ QItemSelectionModel *s = itemView()->selectionModel(); s->select(index(0, column), QItemSelectionModel::Select | QItemSelectionModel::Columns);}void QAccessibleItemView::unselectRow(int row){ QItemSelectionModel *s = itemView()->selectionModel(); s->select(index(row, 0), QItemSelectionModel::Deselect | QItemSelectionModel::Rows);}void QAccessibleItemView::unselectColumn(int column){ QItemSelectionModel *s = itemView()->selectionModel(); s->select(index(0, column), QItemSelectionModel::Deselect | QItemSelectionModel::Columns);}void QAccessibleItemView::cellAtIndex(int index, int *row, int *column, int *rSpan, int *cSpan, bool *isSelect){ *row = rowIndex(index); *column = columnIndex(index); *rSpan = rowSpan(*row, *column); *cSpan = columnSpan(*row, *column); *isSelect = isSelected(*row, *column);}/*! \class QAccessibleHeader qaccessiblewidget.h \brief The QAccessibleHeader class implements the QAccessibleInterface for header widgets. \internal \ingroup accessibility*//*! Constructs a QAccessibleHeader object for \a w.*/QAccessibleHeader::QAccessibleHeader(QWidget *w): QAccessibleWidgetEx(w){ Q_ASSERT(header()); addControllingSignal(QLatin1String("sectionClicked(int)"));}/*! Returns the QHeaderView. */QHeaderView *QAccessibleHeader::header() const{ return qobject_cast<QHeaderView*>(object());}/*! \reimp */QRect QAccessibleHeader::rect(int child) const{ if (!child) return QAccessibleWidgetEx::rect(0); QHeaderView *h = header(); QPoint zero = h->mapToGlobal(QPoint(0, 0)); int sectionSize = h->sectionSize(child - 1); int sectionPos = h->sectionPosition(child - 1); return h->orientation() == Qt::Horizontal ? QRect(zero.x() + sectionPos, zero.y(), sectionSize, h->height()) : QRect(zero.x(), zero.y() + sectionPos, h->width(), sectionSize);}/*! \reimp */int QAccessibleHeader::childCount() const{ return header()->count();}/*! \reimp */QString QAccessibleHeader::text(Text t, int child) const{ QString str; if (child > 0 && child <= childCount()) { switch (t) { case Name: str = header()->model()->headerData(child - 1, header()->orientation()).toString(); break; case Description: { QAccessibleEvent event(QEvent::AccessibilityDescription, child); if (QApplication::sendEvent(widget(), &event)) str = event.value(); break; } case Help: { QAccessibleEvent event(QEvent::AccessibilityHelp, child); if (QApplication::sendEvent(widget(), &event)) str = event.value(); break; } default: break; } } if (str.isEmpty()) str = QAccessibleWidgetEx::text(t, child); return str;}/*! \reimp */QAccessible::Role QAccessibleHeader::role(int) const{ return (header()->orientation() == Qt::Horizontal) ? ColumnHeader : RowHeader;}/*! \reimp */QAccessible::State QAccessibleHeader::state(int child) const{ State state = QAccessibleWidgetEx::state(child); if (child) { int section = child - 1; if (header()->isSectionHidden(section)) state |= Invisible; if (header()->resizeMode(section) != QHeaderView::Custom) state |= Sizeable; } else { if (header()->isMovable()) state |= Movable; } if (!header()->isClickable()) state |= Unavailable; return state;}#endif // QT_NO_ITEMVIEWS#ifndef QT_NO_TABBAR/*! \class QAccessibleTabBar qaccessiblewidget.h \brief The QAccessibleTabBar class implements the QAccessibleInterface for tab bars. \internal \ingroup accessibility*//*! Constructs a QAccessibleTabBar object for \a w.*/QAccessibleTabBar::QAccessibleTabBar(QWidget *w): QAccessibleWidgetEx(w){ Q_ASSERT(tabBar());}/*! Returns the QTabBar. */QTabBar *QAccessibleTabBar::tabBar() const{ return qobject_cast<QTabBar*>(object());}QAbstractButton *QAccessibleTabBar::button(int child) const{ if (child <= tabBar()->count()) return 0; QTabBarPrivate * const tabBarPrivate = tabBar()->d_func(); if (child - tabBar()->count() == 1) return tabBarPrivate->leftB; if (child - tabBar()->count() == 2) return tabBarPrivate->rightB; Q_ASSERT(false); return 0;}/*! \reimp */QRect QAccessibleTabBar::rect(int child) const{ if (!child || !tabBar()->isVisible()) return QAccessibleWidgetEx::rect(0); QPoint tp = tabBar()->mapToGlobal(QPoint(0,0)); QRect rec; if (child <= tabBar()->count()) { rec = tabBar()->tabRect(child - 1); } else { QWidget *widget = button(child); rec = widget ? widget->geometry() : QRect(); } return QRect(tp.x() + rec.x(), tp.y() + rec.y(), rec.width(), rec.height());}/*! \reimp */int QAccessibleTabBar::childCount() const{ // tabs + scroll buttons return tabBar()->count() + 2;}/*! \reimp */QString QAccessibleTabBar::text(Text t, int child) const{ QString str; if (child > tabBar()->count()) { bool left = child - tabBar()->count() == 1; switch (t) { case Name: return left ? QTabBar::tr("Scroll Left") : QTabBar::tr("Scroll Right"); default: break; } } else if (child > 0) { switch (t) { case Name: return qt_accStripAmp(tabBar()->tabText(child - 1)); default: break; } } if (str.isEmpty()) str = QAccessibleWidgetEx::text(t, child);; return str;}/*! \reimp */QAccessible::Role QAccessibleTabBar::role(int child) const{ if (!child) return PageTabList; if (child > tabBar()->count()) return PushButton; return PageTab;}/*! \reimp */QAccessible::State QAccessibleTabBar::state(int child) const{ State st = QAccessibleWidgetEx::state(0); if (!child) return st; QTabBar *tb = tabBar(); if (child > tb->count()) { QWidget *bt = button(child); if (!bt) return st; if (bt->isEnabled() == false) st |= Unavailable; if (bt->isVisible() == false) st |= Invisible; if (bt->focusPolicy() != Qt::NoFocus && bt->isActiveWindow()) st |= Focusable; if (bt->hasFocus()) st |= Focused; return st; } if (!tb->isTabEnabled(child - 1)) st |= Unavailable; else st |= Selectable; if (!tb->currentIndex() == child - 1) st |= Selected; return st;}/*! \reimp */bool QAccessibleTabBar::doAction(int action, int child, const QVariantList &){ if (!child) return false; if (action != QAccessible::DefaultAction && action != QAccessible::Press) return false; if (child > tabBar()->count()) { QAbstractButton *bt = button(child); if (!bt->isEnabled()) return false; bt->animateClick(); return true; } if (!tabBar()->isTabEnabled(child - 1)) return false; tabBar()->setCurrentIndex(child - 1); return true;}/*! Selects the item with index \a child if \a on is true; otherwise unselects it. If \a extend is true and the selection mode is not \c Single and there is an existing selection, the selection is extended to include all the items from the existing selection up to and including the item with index \a child. Returns true if a selection was made or extended; otherwise returns false. \sa selection() clearSelection()*/bool QAccessibleTabBar::setSelected(int child, bool on, bool extend){ if (!child || !on || extend || child > tabBar()->count()) return false; if (!tabBar()->isTabEnabled(child - 1)) return false; tabBar()->setCurrentIndex(child - 1); return true;}/*! Returns a (possibly empty) list of indexes of the items selected in the list box. \sa setSelected() clearSelection()*/QVector<int> QAccessibleTabBar::selection() const{ QVector<int> array; if (tabBar()->currentIndex() != -1) array +=tabBar()->currentIndex() + 1; return array;}#endif // QT_NO_TABBAR#ifndef QT_NO_COMBOBOX/*! \class QAccessibleComboBox qaccessiblewidget.h \brief The QAccessibleComboBox class implements the QAccessibleInterface for editable and read-only combo boxes. \internal \ingroup accessibility*//*! \enum QAccessibleComboBox::ComboBoxElements \internal \value ComboBoxSelf \value CurrentText \value OpenList \value PopupList*//*! Constructs a QAccessibleComboBox object for \a w.*/QAccessibleComboBox::QAccessibleComboBox(QWidget *w): QAccessibleWidgetEx(w, ComboBox){ Q_ASSERT(comboBox());}/*! Returns the combobox.*/QComboBox *QAccessibleComboBox::comboBox() const{ return qobject_cast<QComboBox*>(object());}/*! \reimp */QRect QAccessibleComboBox::rect(int child) const{ QPoint tp; QStyle::SubControl sc; QRect r; switch (child) { case CurrentText: if (comboBox()->isEditable()) { tp = comboBox()->lineEdit()->mapToGlobal(QPoint(0,0)); r = comboBox()->lineEdit()->rect(); sc = QStyle::SC_None; } else { tp = comboBox()->mapToGlobal(QPoint(0,0)); sc = QStyle::SC_ComboBoxEditField; } break; case OpenList: tp = comboBox()->mapToGlobal(QPoint(0,0)); sc = QStyle::SC_ComboBoxArrow; break; default: return QAccessibleWidgetEx::rect(child); } if (sc != QStyle::SC_None) { QStyleOptionComboBox option; option.initFrom(comboBox());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -