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

📄 qdesigner_command.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
}// ---- InsertRowCommand ----InsertRowCommand::InsertRowCommand(QDesignerFormWindowInterface *formWindow)    : QDesignerFormWindowCommand(tr("Insert Row"), formWindow){}void InsertRowCommand::init(QWidget *widget, int row){    m_widget = widget;    m_row = row;}void InsertRowCommand::redo(){}void InsertRowCommand::undo(){}// ---- ContainerWidgetCommand ----ContainerWidgetCommand::ContainerWidgetCommand(QDesignerFormWindowInterface *formWindow)    : QDesignerFormWindowCommand(QString(), formWindow){}ContainerWidgetCommand::~ContainerWidgetCommand(){}QDesignerContainerExtension *ContainerWidgetCommand::containerExtension() const{    QExtensionManager *mgr = core()->extensionManager();    return qt_extension<QDesignerContainerExtension*>(mgr, m_containerWidget);}void ContainerWidgetCommand::init(QWidget *containerWidget){    m_containerWidget = containerWidget;    if (QDesignerContainerExtension *c = containerExtension()) {        m_index = c->currentIndex();        m_widget = c->widget(m_index);    }}void ContainerWidgetCommand::removePage(){    if (QDesignerContainerExtension *c = containerExtension()) {        c->remove(m_index);        m_widget->hide();        m_widget->setParent(formWindow());    }}void ContainerWidgetCommand::addPage(){    if (QDesignerContainerExtension *c = containerExtension()) {        c->insertWidget(m_index, m_widget);        m_widget->show();        c->setCurrentIndex(m_index);    }}// ---- DeleteContainerWidgetPageCommand ----DeleteContainerWidgetPageCommand::DeleteContainerWidgetPageCommand(QDesignerFormWindowInterface *formWindow)    : ContainerWidgetCommand(formWindow){}DeleteContainerWidgetPageCommand::~DeleteContainerWidgetPageCommand(){}void DeleteContainerWidgetPageCommand::init(QWidget *containerWidget){    ContainerWidgetCommand::init(containerWidget);    setDescription(tr("Delete Page"));}void DeleteContainerWidgetPageCommand::redo(){    removePage();    cheapUpdate();}void DeleteContainerWidgetPageCommand::undo(){    addPage();    cheapUpdate();}// ---- AddContainerWidgetPageCommand ----AddContainerWidgetPageCommand::AddContainerWidgetPageCommand(QDesignerFormWindowInterface *formWindow)    : ContainerWidgetCommand(formWindow){}AddContainerWidgetPageCommand::~AddContainerWidgetPageCommand(){}void AddContainerWidgetPageCommand::init(QWidget *containerWidget){    init(containerWidget, InsertBefore);}void AddContainerWidgetPageCommand::init(QWidget *containerWidget, InsertionMode mode){    m_containerWidget = containerWidget;    if (QDesignerContainerExtension *c = containerExtension()) {        m_index = c->currentIndex();        if (mode == InsertAfter)            m_index++;        m_widget = new QDesignerWidget(formWindow(), m_containerWidget);        m_widget->setObjectName(tr("page"));        formWindow()->ensureUniqueObjectName(m_widget);        setDescription(tr("Insert Page"));        QDesignerFormEditorInterface *core = formWindow()->core();        core->metaDataBase()->add(m_widget);    }}void AddContainerWidgetPageCommand::redo(){    addPage();    cheapUpdate();}void AddContainerWidgetPageCommand::undo(){    removePage();    cheapUpdate();}// ---- ChangeTableContentsCommand ----ChangeTableContentsCommand::ChangeTableContentsCommand(QDesignerFormWindowInterface *formWindow)    : QDesignerFormWindowCommand(tr("Change Table Contents"), formWindow),        m_oldColumnCount(0),        m_newColumnCount(0),        m_oldRowCount(0),        m_newRowCount(0){}void ChangeTableContentsCommand::init(QTableWidget *tableWidget, QTableWidget *fromTableWidget){    m_tableWidget = tableWidget;    m_oldItemsState.clear();    m_newItemsState.clear();    m_oldHorizontalHeaderState.clear();    m_newHorizontalHeaderState.clear();    m_oldVerticalHeaderState.clear();    m_newVerticalHeaderState.clear();    m_oldColumnCount = tableWidget->columnCount();    m_oldRowCount = tableWidget->rowCount();    m_newColumnCount = fromTableWidget->columnCount();    m_newRowCount = fromTableWidget->rowCount();    for (int col = 0; col < m_oldColumnCount; col++) {        QTableWidgetItem *item = tableWidget->horizontalHeaderItem(col);        if (item) {            QString text = item->text();            QIcon icon = item->icon();            if (!text.isEmpty() || !icon.isNull()) {                m_oldHorizontalHeaderState[col] =                            qMakePair<QString, QIcon>(text, icon);            }        }    }    for (int row = 0; row < m_oldRowCount; row++) {        QTableWidgetItem *item = tableWidget->verticalHeaderItem(row);        if (item) {            QString text = item->text();            QIcon icon = item->icon();            if (!text.isEmpty() || !icon.isNull()) {                m_oldVerticalHeaderState[row] =                            qMakePair<QString, QIcon>(text, icon);            }        }    }    for (int col = 0; col < m_oldColumnCount; col++) {        for (int row = 0; row < m_oldRowCount; row++) {            QTableWidgetItem *item = tableWidget->item(row, col);            if (item) {                QString text = item->text();                QIcon icon = item->icon();                if (!text.isEmpty() || !icon.isNull()) {                    m_oldItemsState[qMakePair<int, int>(row, col)] =                                qMakePair<QString, QIcon>(text, icon);                }            }        }    }    for (int col = 0; col < m_newColumnCount; col++) {        QTableWidgetItem *item = fromTableWidget->horizontalHeaderItem(col);        if (item) {            QString text = item->text();            QIcon icon = item->icon();            if (!text.isEmpty() || !icon.isNull()) {                m_newHorizontalHeaderState[col] =                            qMakePair<QString, QIcon>(text, icon);            }        }    }    for (int row = 0; row < m_newRowCount; row++) {        QTableWidgetItem *item = fromTableWidget->verticalHeaderItem(row);        if (item) {            QString text = item->text();            QIcon icon = item->icon();            if (!text.isEmpty() || !icon.isNull()) {                m_newVerticalHeaderState[row] =                            qMakePair<QString, QIcon>(text, icon);            }        }    }    for (int col = 0; col < m_newColumnCount; col++) {        for (int row = 0; row < m_newRowCount; row++) {            QTableWidgetItem *item = fromTableWidget->item(row, col);            if (item) {                QString text = item->text();                QIcon icon = item->icon();                if (!text.isEmpty() || !icon.isNull()) {                    m_newItemsState[qMakePair<int, int>(row, col)] =                                qMakePair<QString, QIcon>(text, icon);                }            }        }    }}void ChangeTableContentsCommand::changeContents(QTableWidget *tableWidget,        int rowCount, int columnCount,        const QMap<int, QPair<QString, QIcon> > &horizontalHeaderState,        const QMap<int, QPair<QString, QIcon> > &verticalHeaderState,        const QMap<QPair<int, int>, QPair<QString, QIcon> > &itemsState) const{    tableWidget->clear();    tableWidget->setColumnCount(columnCount);    QMap<int, QPair<QString, QIcon> >::ConstIterator itColumn =                horizontalHeaderState.constBegin();    while (itColumn != horizontalHeaderState.constEnd()) {        int column = itColumn.key();        QString text = itColumn.value().first;        QIcon icon = itColumn.value().second;        QTableWidgetItem *item = new QTableWidgetItem;        item->setText(text);        item->setIcon(icon);        tableWidget->setHorizontalHeaderItem(column, item);        itColumn++;    }    tableWidget->setRowCount(rowCount);    QMap<int, QPair<QString, QIcon> >::ConstIterator itRow =                verticalHeaderState.constBegin();    while (itRow != verticalHeaderState.constEnd()) {        int row = itRow.key();        QString text = itRow.value().first;        QIcon icon = itRow.value().second;        QTableWidgetItem *item = new QTableWidgetItem;        item->setText(text);        item->setIcon(icon);        tableWidget->setVerticalHeaderItem(row, item);        itRow++;    }    QMap<QPair<int, int>, QPair<QString, QIcon> >::ConstIterator itItem =                itemsState.constBegin();    while (itItem != itemsState.constEnd()) {        int row = itItem.key().first;        int column = itItem.key().second;        QString text = itItem.value().first;        QIcon icon = itItem.value().second;        QTableWidgetItem *item = new QTableWidgetItem;        item->setText(text);        item->setIcon(icon);        tableWidget->setItem(row, column, item);        itItem++;    }}void ChangeTableContentsCommand::redo(){    changeContents(m_tableWidget, m_newRowCount, m_newColumnCount,                m_newHorizontalHeaderState, m_newVerticalHeaderState, m_newItemsState);}void ChangeTableContentsCommand::undo(){    changeContents(m_tableWidget, m_oldRowCount, m_oldColumnCount,                m_oldHorizontalHeaderState, m_oldVerticalHeaderState, m_oldItemsState);}// ---- ChangeTreeContentsCommand ----ChangeTreeContentsCommand::ChangeTreeContentsCommand(QDesignerFormWindowInterface *formWindow)    : QDesignerFormWindowCommand(tr("Change Tree Contents"), formWindow),        m_oldHeaderItemState(0),        m_newHeaderItemState(0),        m_oldColumnCount(0),        m_newColumnCount(0){}ChangeTreeContentsCommand::~ChangeTreeContentsCommand(){    clearState(m_oldItemsState, m_oldHeaderItemState);    clearState(m_newItemsState, m_newHeaderItemState);}void ChangeTreeContentsCommand::init(QTreeWidget *treeWidget, QTreeWidget *fromTreeWidget){    m_treeWidget = treeWidget;    m_oldColumnCount = treeWidget->columnCount();    m_newColumnCount = fromTreeWidget->columnCount();    initState(m_oldItemsState, m_oldHeaderItemState, treeWidget);    initState(m_newItemsState, m_newHeaderItemState, fromTreeWidget);}void ChangeTreeContentsCommand::redo(){    changeContents(m_treeWidget, m_newColumnCount, m_newItemsState, m_newHeaderItemState);}void ChangeTreeContentsCommand::undo(){    changeContents(m_treeWidget, m_oldColumnCount, m_oldItemsState, m_oldHeaderItemState);}void ChangeTreeContentsCommand::initState(QList<QTreeWidgetItem *> &itemsState,                QTreeWidgetItem *&headerItemState, QTreeWidget *fromTreeWidget) const{    clearState(itemsState, headerItemState);    for (int i = 0; i < fromTreeWidget->topLevelItemCount(); i++)        itemsState.append(fromTreeWidget->topLevelItem(i)->clone());    headerItemState = fromTreeWidget->headerItem()->clone();}void ChangeTreeContentsCommand::changeContents(QTreeWidget *treeWidget, int columnCount,        const QList<QTreeWidgetItem *> &itemsState, const QTreeWidgetItem *headerItemState) const{    treeWidget->clear();    treeWidget->setColumnCount(columnCount);    treeWidget->setHeaderItem(headerItemState->clone());    if (!columnCount)        return;    foreach (QTreeWidgetItem *item, itemsState)        treeWidget->addTopLevelItem(item->clone());}void ChangeTreeContentsCommand::clearState(QList<QTreeWidgetItem *> &itemsState,            QTreeWidgetItem *&headerItemState) const{    QListIterator<QTreeWidgetItem *> it(itemsState);    while (it.hasNext())        delete it.next();    itemsState.clear();    if (headerItemState)        delete headerItemState;    headerItemState = 0;}// ---- ChangeListContentsCommand ----ChangeListContentsCommand::ChangeListContentsCommand(QDesignerFormWindowInterface *formWindow)    : QDesignerFormWindowCommand(QString(), formWindow){}void ChangeListContentsCommand::init(QListWidget *listWidget,                const QList<QPair<QString, QIcon> > &items){    m_listWidget = listWidget;    m_comboBox = 0;    m_newItemsState = items;    m_oldItemsState.clear();    for (int i = 0; i < listWidget->count(); i++) {        QListWidgetItem *item = listWidget->item(i);        QString text = item->text();        QIcon icon = item->icon();        m_oldItemsState.append(qMakePair<QString, QIcon>(text, icon));    }}void ChangeListContentsCommand::init(QComboBox *comboBox,                const QList<QPair<QString, QIcon> > &items){    m_listWidget = 0;    m_comboBox = comboBox;    m_newItemsState = items;    m_oldItemsState.clear();    for (int i = 0; i < comboBox->count(); i++) {        QString text = comboBox->itemText(i);        QIcon icon = comboBox->itemIcon(i);        m_oldItemsState.append(qMakePair<QString, QIcon>(text, icon));    }}void ChangeListContentsCommand::redo(){    if (m_listWidget)        changeContents(m_listWidget, m_newItemsState);    else if (m_comboBox)        changeContents(m_comboBox, m_newItemsState);}void ChangeListContentsCommand::undo(){    if (m_listWidget)        changeContents(m_listWidget, m_oldItemsState);    else if (m_comboBox)        changeContents(m_comboBox, m_oldItemsState);}void ChangeListContentsCommand::changeContents(QListWidget *listWidget,        const QList<QPair<QString, QIcon> > &itemsSt

⌨️ 快捷键说明

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