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

📄 converter.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        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 + -