abstractformbuilder.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 2,006 行 · 第 1/5 页

CPP
2,006
字号
    ui_widget->setElementItem(ui_items);}/*!    \internal*/void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget *ui_widget, DomWidget *ui_parentWidget){    Q_UNUSED(ui_parentWidget);    QList<DomItem*> ui_items = ui_widget->elementItem();    for (int i=0; i<comboBox->count(); ++i) {        DomItem *ui_item = new DomItem();        QList<DomProperty*> properties;        // text        DomString *str = new DomString;        str->setText(comboBox->itemText(i));        DomProperty *p = 0;        p = new DomProperty;        p->setAttributeName(QLatin1String("text"));        p->setElementString(str);        properties.append(p);        if (DomProperty *p = iconToDomProperty(qVariantValue<QIcon>(comboBox->itemData(i))))                properties.append(p);        ui_item->setElementProperty(properties);        ui_items.append(ui_item);    }    ui_widget->setElementItem(ui_items);}/*!    \internal*/void QAbstractFormBuilder::saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget){    if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) {        saveListWidgetExtraInfo(listWidget, ui_widget, ui_parentWidget);    } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) {        saveTreeWidgetExtraInfo(treeWidget, ui_widget, ui_parentWidget);    } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) {        saveTableWidgetExtraInfo(tableWidget, ui_widget, ui_parentWidget);    } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) {        if (!qobject_cast<QFontComboBox*>(widget))            saveComboBoxExtraInfo(comboBox, ui_widget, ui_parentWidget);    }}/*!    \internal*/void QAbstractFormBuilder::loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget){    Q_UNUSED(parentWidget);    foreach (DomItem *ui_item, ui_widget->elementItem()) {        const DomPropertyHash properties = propertyMap(ui_item->elementProperty());        QListWidgetItem *item = new QListWidgetItem(listWidget);        DomProperty *p = properties.value(QLatin1String("text"));        if (p && p->kind() == DomProperty::String) {            item->setText(p->elementString()->text());        }        p = properties.value(QLatin1String("icon"));        if (p && p->kind() == DomProperty::IconSet) {            item->setIcon(domPropertyToIcon(p));        }    }    DomProperty *currentRow = propertyMap(ui_widget->elementProperty()).value(QLatin1String("currentRow"));    if (currentRow)        listWidget->setCurrentRow(currentRow->elementNumber());}/*!    \internal*/void QAbstractFormBuilder::loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget){    Q_UNUSED(parentWidget);    const QList<DomColumn*> columns = ui_widget->elementColumn();    if (columns.count() > 0)        treeWidget->setColumnCount(columns.count());    for (int i = 0; i<columns.count(); ++i) {        const DomColumn *c = columns.at(i);        const DomPropertyHash properties = propertyMap(c->elementProperty());        DomProperty *ptext = properties.value(QLatin1String("text"));        DomProperty *picon = properties.value(QLatin1String("icon"));        if (ptext != 0 && ptext->elementString())            treeWidget->headerItem()->setText(i, ptext->elementString()->text());        if (picon && picon->kind() == DomProperty::IconSet) {            treeWidget->headerItem()->setIcon(i, domPropertyToIcon(picon));        }    }    QQueue<QPair<DomItem *, QTreeWidgetItem *> > pendingQueue;    foreach (DomItem *ui_item, ui_widget->elementItem())        pendingQueue.enqueue(qMakePair(ui_item, (QTreeWidgetItem *)0));    while (!pendingQueue.isEmpty()) {        const QPair<DomItem *, QTreeWidgetItem *> pair = pendingQueue.dequeue();        const DomItem *domItem = pair.first;        QTreeWidgetItem *parentItem = pair.second;        QTreeWidgetItem *currentItem = 0;        if (parentItem)            currentItem = new QTreeWidgetItem(parentItem);        else            currentItem = new QTreeWidgetItem(treeWidget);        const QList<DomProperty *> properties = domItem->elementProperty();        int col = 0;        foreach (DomProperty *property, properties) {            if (property->attributeName() == QLatin1String("text") &&                        property->elementString()) {                currentItem->setText(col, property->elementString()->text());                col++;            } else if (property->attributeName() == QLatin1String("icon") &&                        property->kind() == DomProperty::IconSet && col > 0) {                currentItem->setIcon(col - 1, domPropertyToIcon(property));            }        }        foreach (DomItem *childItem, domItem->elementItem())            pendingQueue.enqueue(qMakePair(childItem, currentItem));    }}/*!    \internal*/void QAbstractFormBuilder::loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget){    Q_UNUSED(parentWidget);    const QList<DomColumn*> columns = ui_widget->elementColumn();    if (columns.count() > 0)        tableWidget->setColumnCount(columns.count());    for (int i = 0; i< columns.count(); i++) {        DomColumn *c = columns.at(i);        const DomPropertyHash properties = propertyMap(c->elementProperty());        const DomProperty *ptext = properties.value(QLatin1String("text"));        const DomProperty *picon = properties.value(QLatin1String("icon"));        if (ptext || picon) {            QTableWidgetItem *item = new QTableWidgetItem;            if (ptext != 0 && ptext->elementString()) {                item->setText(ptext->elementString()->text());            }            if (picon && picon->kind() == DomProperty::IconSet) {                item->setIcon(domPropertyToIcon(picon));            }            tableWidget->setHorizontalHeaderItem(i, item);        }    }    const QList<DomRow*> rows = ui_widget->elementRow();    if (rows.count() > 0)        tableWidget->setRowCount(rows.count());    for (int i = 0; i< rows.count(); i++) {        const DomRow *r = rows.at(i);        const DomPropertyHash properties = propertyMap(r->elementProperty());        const DomProperty *ptext = properties.value(QLatin1String("text"));        const DomProperty *picon = properties.value(QLatin1String("icon"));        if (ptext || picon) {            QTableWidgetItem *item = new QTableWidgetItem;            if (ptext != 0 && ptext->elementString()) {                item->setText(ptext->elementString()->text());            }            if (picon && picon->kind() == DomProperty::IconSet) {                item->setIcon(domPropertyToIcon(picon));            }            tableWidget->setVerticalHeaderItem(i, item);        }    }    foreach (DomItem *ui_item, ui_widget->elementItem()) {        if (ui_item->hasAttributeRow() && ui_item->hasAttributeColumn()) {            QTableWidgetItem *item = new QTableWidgetItem;            foreach (DomProperty *property, ui_item->elementProperty()) {                if (property->attributeName() == QLatin1String("text") &&                        property->elementString()) {                    item->setText(property->elementString()->text());                } else if (property->attributeName() == QLatin1String("icon") &&                        property->kind() == DomProperty::IconSet) {                    item->setIcon(domPropertyToIcon(property));                }            }            tableWidget->setItem(ui_item->attributeRow(), ui_item->attributeColumn(), item);        }    }}/*!    \internal*/void QAbstractFormBuilder::loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget){    Q_UNUSED(parentWidget);    foreach (DomItem *ui_item, ui_widget->elementItem()) {        const DomPropertyHash properties = propertyMap(ui_item->elementProperty());        QString text;        QIcon icon;        DomProperty *p = 0;        p = properties.value(QLatin1String("text"));        if (p && p->elementString()) {            text = p->elementString()->text();        }        p = properties.value(QLatin1String("icon"));        if (p && p->kind() == DomProperty::IconSet) {             icon = domPropertyToIcon(p);        }        comboBox->addItem(icon, text);        comboBox->setItemData((comboBox->count()-1), icon);    }    DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(QLatin1String("currentIndex"));    if (currentIndex)        comboBox->setCurrentIndex(currentIndex->elementNumber());}/*!    \internal*/void QAbstractFormBuilder::loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget){    if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) {        loadListWidgetExtraInfo(ui_widget, listWidget, parentWidget);    } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) {        loadTreeWidgetExtraInfo(ui_widget, treeWidget, parentWidget);    } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) {        loadTableWidgetExtraInfo(ui_widget, tableWidget, parentWidget);    } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) {        if (!qobject_cast<QFontComboBox *>(widget))            loadComboBoxExtraInfo(ui_widget, comboBox, parentWidget);    } else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(widget)) {        DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(QLatin1String("currentIndex"));        if (currentIndex)            tabWidget->setCurrentIndex(currentIndex->elementNumber());    } else if (QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(widget)) {        DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(QLatin1String("currentIndex"));        if (currentIndex)            stackedWidget->setCurrentIndex(currentIndex->elementNumber());    } else if (QToolBox *toolBox = qobject_cast<QToolBox*>(widget)) {        DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(QLatin1String("currentIndex"));        if (currentIndex)            toolBox->setCurrentIndex(currentIndex->elementNumber());    }}/*!    \internal*/QIcon QAbstractFormBuilder::nameToIcon(const QString &filePath, const QString &qrcPath){    Q_UNUSED(qrcPath);    const QFileInfo fileInfo(workingDirectory(), filePath);    return QIcon(fileInfo.absoluteFilePath());}/*!    \internal*/QString QAbstractFormBuilder::iconToFilePath(const QIcon &pm) const{    Q_UNUSED(pm);    return QString();}/*!    \internal*/QString QAbstractFormBuilder::iconToQrcPath(const QIcon &pm) const{    Q_UNUSED(pm);    return QString();}/*!    \internal*/QPixmap QAbstractFormBuilder::nameToPixmap(const QString &filePath, const QString &qrcPath){    Q_UNUSED(qrcPath);    const QFileInfo fileInfo(workingDirectory(), filePath);    return QPixmap(fileInfo.absoluteFilePath());}/*!    \internal*/QString QAbstractFormBuilder::pixmapToFilePath(const QPixmap &pm) const{    Q_UNUSED(pm);    return QString();}/*!    \internal*/QString QAbstractFormBuilder::pixmapToQrcPath(const QPixmap &pm) const{    Q_UNUSED(pm);    return QString();}/*!    Returns the current working directory of the form builder.    \sa setWorkingDirectory() */QDir QAbstractFormBuilder::workingDirectory() const{    return m_workingDirectory;}/*!    Sets the current working directory of the form builder to the    specified \a directory.    \sa workingDirectory()*/void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory){    m_workingDirectory = directory;}/*!    \internal*/DomAction *QAbstractFormBuilder::createDom(QAction *action){    if (action->parentWidget() == action->menu() || action->isSeparator())        return 0;    DomAction *ui_action = new DomAction;    ui_action->setAttributeName(action->objectName());    const QList<DomProperty*> properties = computeProperties(action);    ui_action->setElementProperty(properties);    return ui_action;}/*!    \internal*/DomActionGroup *QAbstractFormBuilder::createDom(QActionGroup *actionGroup){    DomActionGroup *ui_action_group = new DomActionGroup;    ui_action_group->setAttributeName(actionGroup->objectName());    QList<DomProperty*> properties = computeProperties(actionGroup);    ui_action_group->setElementProperty(properties);    QList<DomAction*> ui_actions;    foreach (QAction *action, actionGroup->actions()) {        if (DomAction *ui_action = createDom(action)) {            ui_actions.append(ui_action);        }    }    ui_action_group->setElementAction(ui_actions);    return ui_action_group;}/*!    \internal

⌨️ 快捷键说明

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