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

📄 complexwidgets.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    QModelIndex idx = child ? childIndex(child) : QModelIndex(row);    if (!idx.isValid())        return false;    QItemSelectionModel::SelectionFlags command = QItemSelectionModel::NoUpdate;    switch  (action) {    case SetFocus:        view->setCurrentIndex(idx);        return true;    case ExtendSelection:        if (!child)            return false;        view->selectionModel()->select(QItemSelection(view->currentIndex(), idx),                    QItemSelectionModel::SelectCurrent);        return true;    case Select:        command = QItemSelectionModel::ClearAndSelect;        break;    case ClearSelection:        command = QItemSelectionModel::Clear;        break;    case RemoveSelection:        command = QItemSelectionModel::Deselect;        break;    case AddToSelection:        command = QItemSelectionModel::SelectCurrent;        break;    }    if (command == QItemSelectionModel::NoUpdate)        return false;    if (child)        view->selectionModel()->select(idx, command);    else        view->selectionModel()->select(rowAt(row), command);    return true;}class ModelIndexIterator{public:    ModelIndexIterator(QAbstractItemView *view, const QModelIndex &start = QModelIndex()) : m_view(view)    {        if (start.isValid()) {            m_current = start;        } else if (m_view && m_view->model()) {            m_current = view->model()->index(0, 0);        }    }    bool next(int count = 1) {        for (int i = 0; i < count; ++i) {            do {                if (m_current.isValid()) {                    const QAbstractItemModel *m = m_current.model();#ifndef QT_NO_TREEVIEW                    QTreeView *tree = qobject_cast<QTreeView*>(m_view);                    if (m_current.model()->hasChildren(m_current) && tree && tree->isExpanded(m_current)) {                        m_current = m_current.child(0, 0);                    } else#endif                    {                        int row = m_current.row();                        QModelIndex par = m_current.parent();                        while (row == m->rowCount(par) - 1) {                            m_current = par;                            row = m_current.row();                            par = m_current.parent();                        }                        if (m_current.isValid())                            m_current = m_current.sibling(row + 1, 0);                    }                }            } while (isHidden());        }        return m_current.isValid();    }    bool isHidden() const {        if (false) {#ifndef QT_NO_LISTVIEW        } else if (const QListView *list = qobject_cast<const QListView*>(m_view)) {            return list->isRowHidden(m_current.row());#endif#ifndef QT_NO_TREEVIEW        } else if (const QTreeView *tree = qobject_cast<const QTreeView*>(m_view)) {            return tree->isRowHidden(m_current.row(), m_current.parent());#endif#ifndef QT_NO_TABLEVIEW        } else if (const QTableView *table = qobject_cast<const QTableView*>(m_view)) {            return table->isRowHidden(m_current.row());#endif        }        return false;    }    QModelIndex current() const {        return m_current;    }private:    QModelIndex m_current;    QAbstractItemView *m_view;};QAccessibleItemView::QAccessibleItemView(QWidget *w)    : QAccessibleAbstractScrollArea(w->objectName() == QLatin1String("qt_scrollarea_viewport") ? w->parentWidget() : w){    atVP = w->objectName() == QLatin1String("qt_scrollarea_viewport");}QAccessible::Role QAccessibleItemView::expectedRoleOfChildren() const{    if (atViewport()) {        if (false) {#ifndef QT_NO_TREEVIEW        } else if (qobject_cast<const QTreeView*>(itemView())) {            return TreeItem;#endif#ifndef QT_NO_LISTVIEW        } else if (qobject_cast<const QListView*>(itemView())) {            return ListItem;#endif        }        // TableView        return Row;    } else {        if (false) {#ifndef QT_NO_TREEVIEW        } else if (qobject_cast<const QTreeView*>(itemView())) {            return Tree;#endif#ifndef QT_NO_LISTVIEW        } else if (qobject_cast<const QListView*>(itemView())) {            return List;#endif        }        // TableView        return Table;    }}QObject *QAccessibleItemView::object() const{    QObject *view = QAccessibleAbstractScrollArea::object();    Q_ASSERT(qobject_cast<const QAbstractItemView *>(view));    if (atViewport())        view = qobject_cast<const QAbstractItemView *>(view)->viewport();    return view;}QAbstractItemView *QAccessibleItemView::itemView() const{    return qobject_cast<QAbstractItemView *>(QAccessibleAbstractScrollArea::object());}int QAccessibleItemView::indexOfChild(const QAccessibleInterface *iface) const{    if (atViewport()) {        if (!iface || iface->role(0) != expectedRoleOfChildren())            return -1;        // ### This will fail if a row is hidden.        QModelIndex idx = static_cast<const QAccessibleItemRow *>(iface)->row;        if (!idx.isValid())            return -1;        return entryFromIndex(idx);    } else {        return QAccessibleAbstractScrollArea::indexOfChild(iface);    }}QModelIndex QAccessibleItemView::childIndex(int child) const{    if (!atViewport())        return QModelIndex();    ModelIndexIterator it(itemView());    it.next(child - 1);    return it.current();}int QAccessibleItemView::entryFromIndex(const QModelIndex &index) const{    int entry = -1;    if (false) {#ifndef QT_NO_TREEVIEW    } else if (QTreeView *tree = qobject_cast<QTreeView*>(itemView())) {        entry = tree->visualIndex(index) + 1;#endif#ifndef QT_NO_LISTVIEW    } else if (QListView *list = qobject_cast<QListView*>(itemView())) {        entry = list->visualIndex(index) + 1;#endif#ifndef QT_NO_TABLEVIEW    } else if (QTableView *table = qobject_cast<QTableView*>(itemView())) {        entry = table->visualIndex(index) + 1;#endif    }    return entry;}int QAccessibleItemView::childCount() const{    if (atViewport()) {        if (itemView()->model() == 0)            return 0;        QAbstractItemModel *m = itemView()->model();        QModelIndex idx = m->index(0,0);        if (!idx.isValid())            return 0;        ModelIndexIterator it(itemView());        int count = 1;        while (it.next()) {            ++count;        }        return count;    } else {        return QAccessibleAbstractScrollArea::childCount();    }}QString QAccessibleItemView::text(Text t, int child) const{    if (atViewport()) {        if (!child)            return QAccessibleAbstractScrollArea::text(t, child);        QAccessibleItemRow item(itemView(), childIndex(child));        return item.text(t, 1);    } else {        return QAccessibleAbstractScrollArea::text(t, child);    }}void QAccessibleItemView::setText(Text t, int child, const QString &text){    if (atViewport()) {        if (!child) {            QAccessibleAbstractScrollArea::setText(t, child, text);            return;        }        QAccessibleItemRow item(itemView(), childIndex(child));        item.setText(t, 1, text);    } else {        QAccessibleAbstractScrollArea::setText(t, child, text);    }}QRect QAccessibleItemView::rect(int child) const{    if (atViewport()) {        QRect r;        if (!child) {            QWidget *w = itemView()->viewport();            QPoint globalPos = w->mapToGlobal(QPoint(0,0));            r = w->rect().translated(globalPos);        } else {            QModelIndex idx = childIndex(child);            QAccessibleInterface *iface = new QAccessibleItemRow(itemView(), idx);            r = iface->rect(0);            delete iface;        }        return r;    } else {        return QAccessibleAbstractScrollArea::rect(child);    }}int QAccessibleItemView::childAt(int x, int y) const{    if (atViewport()) {        QPoint localPos = itemView()->viewport()->mapFromGlobal(QPoint(x, y));        QModelIndex idx = itemView()->indexAt(localPos);        idx = idx.sibling(idx.row(), 0);        int entry = entryFromIndex(idx);        if (entry == -1 && rect(0).contains(QPoint(x,y)))            entry = 0;        return entry;    } else {        return QAccessibleAbstractScrollArea::childAt(x, y);    }}QAccessible::Role QAccessibleItemView::role(int child) const{    if ((!atViewport() && child) || (atViewport() && child == 0)) {        QAbstractItemView *view = itemView();#ifndef QT_NO_TABLEVIEW        if (qobject_cast<QTableView *>(view))            return Table;#endif#ifndef QT_NO_LISTVIEW        if (qobject_cast<QListView *>(view))            return List;#endif        return Tree;    }    if (atViewport()) {        if (child)            return Row;    }    return QAccessibleAbstractScrollArea::role(child);}QAccessible::State QAccessibleItemView::state(int child) const{    State st = Normal;    bool queryViewPort = (atViewport() && child == 0) || (!atViewport() && child == 1);    if (queryViewPort) {        if (itemView()->selectionMode() != QAbstractItemView::NoSelection) {            st |= Selectable;            st |= Focusable;        }    } else if (atViewport()) {    // children of viewport        QAccessibleItemRow item(itemView(), childIndex(child));        st |= item.state(0);    } else if (!atViewport() && child != 1) {        st = QAccessibleAbstractScrollArea::state(child);    }    return st;}int QAccessibleItemView::navigate(RelationFlag relation, int index,                                  QAccessibleInterface **iface) const{    if (atViewport()) {        if (relation == Ancestor && index == 1) {            *iface = new QAccessibleItemView(itemView());            return 0;        } else if (relation == Child && index >= 1) {            //###JAS hidden rows..            QModelIndex idx = childIndex(index);            if (idx.isValid()) {                *iface = new QAccessibleItemRow(itemView(), idx);                return 0;            }        } else if (relation == Sibling && index >= 1) {            QAccessibleInterface *parent = new QAccessibleItemView(itemView());            return parent->navigate(Child, index, iface);        }        *iface = 0;        return -1;    } else {        return QAccessibleAbstractScrollArea::navigate(relation, index, iface);    }}/* returns the model index for a given row and column */QModelIndex QAccessibleItemView::index(int row, int column) const{    return itemView()->model()->index(row, column);}QAccessibleInterface *QAccessibleItemView::accessibleAt(int row, int column){    QWidget *indexWidget = itemView()->indexWidget(index(row, column));    return QAccessible::queryAccessibleInterface(indexWidget);}/* We don't have a concept of a "caption" in Qt's standard widgets */QAccessibleInterface *QAccessibleItemView::caption(){    return 0;}/* childIndex is row * columnCount + columnIndex */int QAccessibleItemView::childIndex(int rowIndex, int columnIndex){    return rowIndex * itemView()->model()->columnCount() + columnIndex;}/* Return the header data as column description */QString QAccessibleItemView::columnDescription(int column){    return itemView()->model()->headerData(column, Qt::Horizontal).toString();}/* We don't support column spanning atm */int QAccessibleItemView::columnSpan(int /* row */, int /* column */){    return 1;}/* Return the horizontal header view */QAccessibleInterface *QAccessibleItemView::columnHeader(){#ifndef QT_NO_TREEVIEW    if (QTreeView *tree = qobject_cast<QTreeView *>(itemView()))        return QAccessible::queryAccessibleInterface(tree->header());#endif#ifndef QT_NO_TABLEVIEW    if (QTableView *table = qobject_cast<QTableView *>(itemView()))        return QAccessible::queryAccessibleInterface(table->horizontalHeader());#endif    return 0;}int QAccessibleItemView::columnIndex(int childIndex){    int columnCount = itemView()->model()->columnCount();    if (!columnCount)        return 0;    return childIndex % columnCount;}int QAccessibleItemView::columnCount(){    return itemView()->model()->columnCount();}int QAccessibleItemView::rowCount(){    return itemView()->model()->rowCount();}int QAccessibleItemView::selectedColumnCount(){    return itemView()->selectionModel()->selectedColumns().count();}int QAccessibleItemView::selectedRowCount(){    return itemView()->selectionModel()->selectedRows().count();}QString QAccessibleItemView::rowDescription(int row){    return itemView()->model()->headerData(row, Qt::Vertical).toString();}/* We don't support row spanning */int QAccessibleItemView::rowSpan(int /*row*/, int /*column*/){    return 1;}QAccessibleInterface *QAccessibleItemView::rowHeader(){#ifndef QT_NO_TABLEVIEW    if (QTableView *table = qobject_cast<QTableView *>(itemView()))        return QAccessible::queryAccessibleInterface(table->verticalHeader());#endif

⌨️ 快捷键说明

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