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

📄 converter.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    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;    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();    const 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);        }        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);    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);        }        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"), QLatin1String("spacer")).toByteArray();        Variant var;        var.createSize(0, 0);        QVariant def = qVariantFromValue(var);        Size size = asVariant(DomTool::readProperty(e, QLatin1String("sizeHint"), def)).size;        QString sizeType = QLatin1String("QSizePolicy::") + DomTool::readProperty(e, QLatin1String("sizeType"), QLatin1String("Expanding")).toString();        QString orientation = QLatin1String("Qt::") + DomTool::readProperty(e, QLatin1String("orientation"), QLatin1String("Horizontal")).toString();        ui_spacer->setAttributeName(QLatin1String(name));        DomProperty *prop = 0;        // sizeHint        prop = new DomProperty();        prop->setAttributeName(QLatin1String("sizeHint"));        prop->setElementSize(new DomSize());        prop->elementSize()->setElementWidth(size.width);        prop->elementSize()->setElementHeight(size.height);        properties.append(prop);        // sizeType        prop = new DomProperty();        prop->setAttributeName(QLatin1String("sizeType"));        prop->setElementEnum(sizeType);        properties.append(prop);        // orientation        prop = new DomProperty();        prop->setAttributeName(QLatin1String("orientation"));        prop->setElementEnum(orientation);        properties.append(prop);        ui_spacer->setElementProperty(properties);        lay_item->setElementSpacer(ui_spacer);    } else {        DomLayout *ui_layout = createLayout(e);        Q_ASSERT(ui_layout != 0);        fixLayoutMargin(ui_layout);        lay_item->setElementLayout(ui_layout);    }    if (e.hasAttribute(QLatin1String("row")))        lay_item->setAttributeRow(e.attribute(QLatin1String("row")).toInt());    if (e.hasAttribute(QLatin1String("column")))        lay_item->setAttributeColumn(e.attribute(QLatin1String("column")).toInt());    if (e.hasAttribute(QLatin1String("rowspan")))        lay_item->setAttributeRowSpan(e.attribute(QLatin1String("rowspan")).toInt());    if (e.hasAttribute(QLatin1String("colspan")))        lay_item->setAttributeColSpan(e.attribute(QLatin1String("colspan")).toInt());    return lay_item;}void Ui3Reader::fixLayoutMargin(DomLayout *ui_layout){    Q_UNUSED(ui_layout)}void Ui3Reader::findDerivedFontProperties(const QDomElement &n, DomFont &result) const{    bool italic = false;    bool bold = false;    bool underline = false;    bool strikeout = false;    QDomNode pn = n.parentNode();    while(!pn.isNull()) {        for (QDomElement e=pn.firstChild().toElement(); !e.isNull(); e = e.nextSibling().toElement()) {            if (e.tagName().toLower() == QLatin1String("property") &&                e.attribute(QLatin1String("name")) == QLatin1String("font")) {                QDomElement f = e.firstChild().toElement();                for (QDomElement fp = f.firstChild().toElement(); !fp.isNull(); fp = fp.nextSibling().toElement()) {                    QString name = fp.tagName().toLower();                    QString text = fp.text();                    if (!italic && name == QLatin1String("italic")) {                        italic = true;                        if (text == QLatin1String("true") || text == QLatin1String("1"))                            result.setElementItalic(true);                    } else if (!bold && name == QLatin1String("bold")) {                        bold = true;                        if (text == QLatin1String("true") || text == QLatin1String("1"))                            result.setElementBold(true);                    } else if (!underline && name == QLatin1String("underline")) {                        underline = true;                        if (text == QLatin1String("true") || text == QLatin1String("1"))                            result.setElementUnderline(true);                    } else if (!strikeout && name == QLatin1String("strikeout")) {                        strikeout = true;                        if (text == QLatin1String("true") || text == QLatin1String("1"))                            result.setElementStrikeOut(true);                    } else if (name == QLatin1String("family")) {                        if (result.elementFamily().isEmpty())                            result.setElementFamily(text);                    } else if (name == QLatin1String("pointsize")) {                        if (!result.elementPointSize())                            result.setElementPointSize(text.toInt());                    }                }

⌨️ 快捷键说明

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