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

📄 regexpmodel.cpp

📁 Qt4的一些例子
💻 CPP
字号:
#include <QtCore>#include "regexpmodel.h"#include "regexpparser.h"RegExpModel::RegExpModel(QObject *parent)    : QAbstractItemModel(parent){    rootNode = 0;}RegExpModel::~RegExpModel(){    delete rootNode;}void RegExpModel::setRootNode(Node *node){    delete rootNode;    rootNode = node;    reset();}QModelIndex RegExpModel::index(int row, int column,                               const QModelIndex &parent) const{    if (!rootNode)        return QModelIndex();    Node *parentNode = nodeFromIndex(parent);    return createIndex(row, column, parentNode->children[row]);}QModelIndex RegExpModel::parent(const QModelIndex &child) const{    Node *node = nodeFromIndex(child);    if (!node)        return QModelIndex();    Node *parentNode = node->parent;    if (!parentNode)        return QModelIndex();    Node *grandparentNode = parentNode->parent;    if (!grandparentNode)        return QModelIndex();    int row = grandparentNode->children.indexOf(parentNode);    return createIndex(row, child.column(), parentNode);}int RegExpModel::rowCount(const QModelIndex &parent) const{    Node *parentNode = nodeFromIndex(parent);    if (!parentNode)        return 0;    return parentNode->children.count();}int RegExpModel::columnCount(const QModelIndex & /* parent */) const{    return 2;}QVariant RegExpModel::data(const QModelIndex &index, int role) const{    if (role != Qt::DisplayRole)        return QVariant();    Node *node = nodeFromIndex(index);    if (!node)        return QVariant();    if (index.column() == 0) {        switch (node->type) {        case Node::RegExp:            return tr("RegExp");        case Node::Expression:            return tr("Expression");        case Node::Term:            return tr("Term");        case Node::Factor:            return tr("Factor");        case Node::Atom:            return tr("Atom");        case Node::Terminal:            return tr("Terminal");        default:            return tr("Unknown");        }    } else if (index.column() == 1) {        return node->str;    }    return QVariant();}QVariant RegExpModel::headerData(int section,                                 Qt::Orientation orientation,                                 int role) const{    if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {        if (section == 0) {            return tr("Node");        } else if (section == 1) {            return tr("Value");        }    }    return QVariant();}Node *RegExpModel::nodeFromIndex(const QModelIndex &index) const{    if (index.isValid()) {        return static_cast<Node *>(index.internalPointer());    } else {        return rootNode;    }}

⌨️ 快捷键说明

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