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 + -
显示快捷键?