📄 converter.cpp
字号:
customWidget->setElementClass(customClass); customWidget->setElementHeader(header); customWidget->setElementExtends(baseClass); ui_customwidget_list.append(customWidget); } if (ui_customwidget_list.size()) { DomCustomWidgets *customWidgets = new DomCustomWidgets(); customWidgets->setElementCustomWidget(ui_customwidget_list); ui->setElementCustomWidgets(customWidgets); } if (ui_tabstops.size()) { DomTabStops *tabStops = new DomTabStops(); tabStops->setElementTabStop(ui_tabstops); ui->setElementTabStops(tabStops); } if (ui_includes.size()) { DomIncludes *includes = new DomIncludes(); includes->setElementInclude(ui_includes); ui->setElementIncludes(includes); } if (ui_connection_list.size()) { DomConnections *connections = new DomConnections(); connections->setElementConnection(ui_connection_list); ui->setElementConnections(connections); } ui->setAttributeStdSetDef(stdsetdef); return ui;}QString Ui3Reader::fixActionProperties(QList<DomProperty*> &properties, bool isActionGroup){ QString objectName; bool hasMenuText = false; QMutableListIterator<DomProperty*> it(properties); while (it.hasNext()) { DomProperty *prop = it.next(); QString name = prop->attributeName(); if (name == QLatin1String("name")) { objectName = prop->elementCstring(); } else if (isActionGroup && name == QLatin1String("exclusive")) { // continue } else if (isActionGroup) { errorInvalidProperty(name, objectName, isActionGroup ? QLatin1String("QActionGroup") : QLatin1String("QAction")); delete prop; it.remove(); } else if (name == QLatin1String("menuText")) { hasMenuText = true; prop->setAttributeName("text"); } else if (name == QLatin1String("text")) { prop->setAttributeName("iconText"); } else if (name == QLatin1String("iconSet")) { prop->setAttributeName(QLatin1String("icon")); } else if (name == QLatin1String("accel")) { prop->setAttributeName(QLatin1String("shortcut")); } else if (name == QLatin1String("toggleAction")) { prop->setAttributeName(QLatin1String("checkable")); } else if (name == QLatin1String("on")) { prop->setAttributeName(QLatin1String("checked")); } else if (!WidgetInfo::isValidProperty(QLatin1String("QAction"), name)) { errorInvalidProperty(name, objectName, isActionGroup ? QLatin1String("QActionGroup") : QLatin1String("QAction")); delete prop; it.remove(); } } return objectName;}void Ui3Reader::fixActionGroup(DomActionGroup *g){ QList<DomActionGroup*> groups = g->elementActionGroup(); for (int i=0; i<groups.size(); ++i) { fixActionGroup(groups.at(i)); } QList<DomAction*> actions = g->elementAction(); for (int i=0; i<actions.size(); ++i) { DomAction *a = actions.at(i); QList<DomProperty*> properties = a->elementProperty(); QString name = fixActionProperties(properties); a->setElementProperty(properties); if (name.size()) a->setAttributeName(name); } QList<DomProperty*> properties = g->elementProperty(); QString name = fixActionProperties(properties, true); g->setElementProperty(properties); if (name.size()) g->setAttributeName(name);}QString Ui3Reader::fixClassName(const QString &className) const{ return m_porting->renameClass(className);}QString Ui3Reader::fixHeaderName(const QString &headerName) const{ return m_porting->renameHeader(headerName);}DomWidget *Ui3Reader::createWidget(const QDomElement &w, const QString &widgetClass){ DomWidget *ui_widget = new DomWidget; QString className = widgetClass; if (className.isEmpty()) className = w.attribute(QLatin1String("class")); className = fixClassName(className); if ((className.endsWith(QLatin1String("ListView")) && className != QLatin1String("Q3ListView")) || (className.endsWith(QLatin1String("ListBox")) && className != QLatin1String("Q3ListBox")) || (className.endsWith(QLatin1String("ComboBox")) && className != QLatin1String("QComboBox")) || (className.endsWith(QLatin1String("IconView")) && className != QLatin1String("Q3IconView"))) candidateCustomWidgets.insert(className, true); bool isMenu = (className == QLatin1String("QMenuBar") || className == QLatin1String("QMenu")); ui_widget->setAttributeClass(className); QList<DomWidget*> ui_child_list; QList<DomRow*> ui_row_list; QList<DomColumn*> ui_column_list; QList<DomItem*> ui_item_list; QList<DomProperty*> ui_property_list; QList<DomProperty*> ui_attribute_list; QList<DomLayout*> ui_layout_list; QList<DomActionRef*> ui_action_list; QList<DomWidget*> ui_mainwindow_child_list; bool needPolish = false; createProperties(w, &ui_property_list, className); createAttributes(w, &ui_attribute_list, className); DomWidget *ui_mainWindow = 0; DomWidget *ui_centralWidget = 0; if (className == QLatin1String("QMainWindow") || className == QLatin1String("Q3MainWindow")) { ui_centralWidget = new DomWidget; ui_centralWidget->setAttributeClass(QLatin1String("QWidget")); ui_mainwindow_child_list.append(ui_centralWidget); ui_mainWindow = ui_widget; } QDomElement e = w.firstChild().toElement(); bool inQ3ToolBar = className == QLatin1String("Q3ToolBar"); while (!e.isNull()) { QString t = e.tagName().toLower(); if (t == QLatin1String("vbox") || t == QLatin1String("hbox") || t == QLatin1String("grid")) { DomLayout *lay = createLayout(e); Q_ASSERT(lay != 0); if (ui_layout_list.isEmpty()) { ui_layout_list.append(lay); } else { // it's not possible to have more than one layout for widget! delete lay; } } else if (t == QLatin1String("spacer")) { // hmm, spacer as child of a widget.. it doesn't make sense, so skip it! } else if (t == QLatin1String("widget")) { DomWidget *ui_child = createWidget(e); Q_ASSERT(ui_child != 0); bool isLayoutWidget = ui_child->attributeClass() == QLatin1String("QLayoutWidget"); if (isLayoutWidget) ui_child->setAttributeClass(QLatin1String("QWidget")); foreach (DomLayout *layout, ui_child->elementLayout()) { fixLayoutMargin(layout); } QString widgetClass = ui_child->attributeClass(); if (widgetClass == QLatin1String("QMenuBar") || widgetClass == QLatin1String("QToolBar") || widgetClass == QLatin1String("QStatusBar")) { ui_mainwindow_child_list.append(ui_child); } else { ui_child_list.append(ui_child); } if (inQ3ToolBar) { DomActionRef *ui_action_ref = new DomActionRef(); ui_action_ref->setAttributeName(ui_child->attributeName()); ui_action_list.append(ui_action_ref); } } else if (t == QLatin1String("action")) { DomActionRef *a = new DomActionRef(); a->read(e); ui_action_list.append(a); } else if (t == QLatin1String("separator")) { DomActionRef *a = new DomActionRef(); a->setAttributeName(QLatin1String("separator")); ui_action_list.append(a); } else if (t == QLatin1String("property")) { // skip the property it is already handled by createProperties QString name = e.attribute(QLatin1String("name")); // change the varname this widget if (name == QLatin1String("name")) ui_widget->setAttributeName(DomTool::readProperty(w, QLatin1String("name"), QVariant()).toString()); } else if (t == QLatin1String("row")) { DomRow *row = new DomRow(); row->read(e); ui_row_list.append(row); } else if (t == QLatin1String("column")) { DomColumn *column = new DomColumn(); column->read(e); ui_column_list.append(column); } else if (isMenu && t == QLatin1String("item")) { QString text = e.attribute(QLatin1String("text")); QString name = e.attribute(QLatin1String("name")); QString accel = e.attribute(QLatin1String("accel")); QList<DomProperty*> properties; DomProperty *atitle = new DomProperty(); atitle->setAttributeName(QLatin1String("title")); DomString *str = new DomString(); str->setText(text); atitle->setElementString(str); properties.append(atitle); DomWidget *menu = createWidget(e, QLatin1String("QMenu")); menu->setAttributeName(name); menu->setElementProperty(properties); ui_child_list.append(menu); DomActionRef *a = new DomActionRef(); a->setAttributeName(name); ui_action_list.append(a); } else if (t == QLatin1String("item")) { DomItem *item = new DomItem(); item->read(e); ui_item_list.append(item); } QString s = getClassName(e); if (s == QLatin1String("QDataTable") || s == QLatin1String("QDataBrowser")) { if (isFrameworkCodeGenerated(e)) needPolish = true; } e = e.nextSibling().toElement(); } ui_widget->setElementProperty(ui_property_list); ui_widget->setElementAttribute(ui_attribute_list); if (ui_centralWidget != 0) { Q_ASSERT(ui_mainWindow != 0); ui_mainWindow->setElementWidget(ui_mainwindow_child_list); ui_widget = ui_centralWidget; } ui_widget->setElementWidget(ui_child_list); ui_widget->setElementAddAction(ui_action_list); ui_widget->setElementRow(ui_row_list); ui_widget->setElementColumn(ui_column_list); ui_widget->setElementItem(ui_item_list); ui_widget->setElementLayout(ui_layout_list); //ui_widget->setAttributeName(p->elementCstring()); return ui_mainWindow ? ui_mainWindow : ui_widget;}DomLayout *Ui3Reader::createLayout(const QDomElement &w){ DomLayout *lay = new DomLayout(); QList<DomLayoutItem*> ui_item_list; QList<DomProperty*> ui_property_list; QList<DomProperty*> ui_attribute_list; QString tagName = w.tagName().toLower(); QString className; if (tagName == QLatin1String("vbox")) className = QLatin1String("QVBoxLayout"); else if (tagName == QLatin1String("hbox")) className = QLatin1String("QHBoxLayout"); else className = QLatin1String("QGridLayout"); lay->setAttributeClass(className); createProperties(w, &ui_property_list, className); createAttributes(w, &ui_attribute_list, className); bool needPolish = false; QDomElement e = w.firstChild().toElement(); while (!e.isNull()) { QString t = e.tagName().toLower(); if (t == QLatin1String("vbox") || t == QLatin1String("hbox") || t == QLatin1String("grid") || t == QLatin1String("spacer") || t == QLatin1String("widget")) { DomLayoutItem *lay_item = createLayoutItem(e); Q_ASSERT(lay_item != 0); ui_item_list.append(lay_item); } QString s = getClassName(e); if (s == QLatin1String("QDataTable") || s == QLatin1String("QDataBrowser")) { if (isFrameworkCodeGenerated(e)) needPolish = true; } e = e.nextSibling().toElement(); } lay->setElementItem(ui_item_list); lay->setElementProperty(ui_property_list); lay->setElementAttribute(ui_attribute_list); return lay;}DomLayoutItem *Ui3Reader::createLayoutItem(const QDomElement &e){ DomLayoutItem *lay_item = new DomLayoutItem; QString tagName = e.tagName().toLower(); if (tagName == QLatin1String("widget")) { DomWidget *ui_widget = createWidget(e); Q_ASSERT(ui_widget != 0); if (ui_widget->attributeClass() == QLatin1String("QLayoutWidget") && ui_widget->elementLayout().size() == 1) { QList<DomLayout*> layouts = ui_widget->elementLayout(); ui_widget->setElementLayout(QList<DomLayout*>()); delete ui_widget; DomLayout *layout = layouts.first(); fixLayoutMargin(layout); lay_item->setElementLayout(layout); } else { if (ui_widget->attributeClass() == QLatin1String("QLayoutWidget")) ui_widget->setAttributeClass(QLatin1String("QWidget")); lay_item->setElementWidget(ui_widget); } } else if (tagName == QLatin1String("spacer")) { DomSpacer *ui_spacer = new DomSpacer(); QList<DomProperty*> properties; QByteArray name = DomTool::readProperty(e, QLatin1String("name"), "spacer").toByteArray(); Variant var; var.createSize(0, 0); QVariant def = qVariantFromValue(var); Size size = asVariant(DomTool::readProperty(e, QLatin1String("sizeHint"), def)).size; QString sizeType = DomTool::readProperty(e, QLatin1String("sizeType"), "Expanding").toString(); QString orientation = DomTool::readProperty(e, QLatin1String("orientation"), "Horizontal").toString(); ui_spacer->setAttributeName(QLatin1String(name));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -