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

📄 cppwriteinitialization.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            if (ifndefMac)                str << "#endif\n";            return;        }    }    if (suppressDefault)        return;    // get default    if (m_state[p] & HasDefaultFunction) {        writeSetter(indent, objectName, setter, m_functions[p], str);        return;    }    if (m_state[p] & HasDefaultValue) {        writeSetter(indent, objectName, setter, m_defaultValues[p], str);    }    return;}void WriteInitialization::LayoutDefaultHandler::writeProperties(const QString &indent, const QString &varName,                                                                const DomPropertyMap &properties, int marginType,                                                                bool suppressMarginDefault,                                                                QTextStream &str) const {    // Write out properties and ignore the ones found in    // subsequent writing of the property list.    int defaultSpacing = marginType == WriteInitialization::Use43UiFile ? -1 : 6;    writeProperty(Spacing, indent, varName, properties, QLatin1String("spacing"), QLatin1String("setSpacing"),                  defaultSpacing, false, str);    // We use 9 as TopLevelMargin, since Designer seem to always use 9.    static const int layoutmargins[4] = {-1, 9, 9, 0};    writeProperty(Margin,  indent, varName, properties, QLatin1String("margin"),  QLatin1String("setMargin"),                  layoutmargins[marginType], suppressMarginDefault, str);}// ---  WriteInitializationWriteInitialization::WriteInitialization(Uic *uic, bool activateScripts) :      m_uic(uic),      m_driver(uic->driver()), m_output(uic->output()), m_option(uic->option()),      m_layoutMarginType(TopLevelMargin),      m_delayedOut(&m_delayedInitialization, QIODevice::WriteOnly),      m_refreshOut(&m_refreshInitialization, QIODevice::WriteOnly),      m_actionOut(&m_delayedActionInitialization, QIODevice::WriteOnly),      m_activateScripts(activateScripts), m_layoutWidget(false){}void WriteInitialization::acceptUI(DomUI *node){    m_registeredImages.clear();    m_actionGroupChain.push(0);    m_widgetChain.push(0);    m_layoutChain.push(0);    acceptLayoutDefault(node->elementLayoutDefault());    acceptLayoutFunction(node->elementLayoutFunction());    if (node->elementCustomWidgets())        TreeWalker::acceptCustomWidgets(node->elementCustomWidgets());    if (node->elementImages())        TreeWalker::acceptImages(node->elementImages());    if (m_option.generateImplemetation)        m_output << "#include <" << m_driver->headerFileName() << ">\n\n";    m_stdsetdef = true;    if (node->hasAttributeStdSetDef())        m_stdsetdef = node->attributeStdSetDef();    const QString className = node->elementClass() + m_option.postfix;    m_generatedClass = className;    const QString varName = m_driver->findOrInsertWidget(node->elementWidget());    m_registeredWidgets.insert(varName, node->elementWidget()); // register the main widget    const QString widgetClassName = node->elementWidget()->attributeClass();    m_output << m_option.indent << "void " << "setupUi(" << widgetClassName << " *" << varName << ")\n"           << m_option.indent << "{\n";    if (m_activateScripts)        writeSetupUIScriptVariableDeclarations( m_option.indent, m_output);    const QStringList connections = m_uic->databaseInfo()->connections();    for (int i=0; i<connections.size(); ++i) {        QString connection = connections.at(i);        if (connection == QLatin1String("(default)"))            continue;        const QString varConn = connection + QLatin1String("Connection");        m_output << m_option.indent << varConn << " = QSqlDatabase::database(" << fixString(connection, m_option.indent) << ");\n";    }    acceptWidget(node->elementWidget());    for (int i=0; i<m_buddies.size(); ++i) {        const Buddy &b = m_buddies.at(i);        if (!m_registeredWidgets.contains(b.objName)) {            fprintf(stderr, "'%s' isn't a valid widget\n", b.objName.toLatin1().data());            continue;        } else if (!m_registeredWidgets.contains(b.buddy)) {            fprintf(stderr, "'%s' isn't a valid widget\n", b.buddy.toLatin1().data());            continue;        }        m_output << m_option.indent << b.objName << "->setBuddy(" << b.buddy << ");\n";    }    if (node->elementTabStops())        acceptTabStops(node->elementTabStops());    if (m_delayedActionInitialization.size())        m_output << "\n" << m_delayedActionInitialization;    m_output << "\n" << m_option.indent << "retranslateUi(" << varName << ");\n";    if (node->elementConnections())        acceptConnections(node->elementConnections());    if (!m_delayedInitialization.isEmpty())        m_output << "\n" << m_delayedInitialization << "\n";    if (m_option.autoConnection)        m_output << "\n" << m_option.indent << "QMetaObject::connectSlotsByName(" << varName << ");\n";    m_output << m_option.indent << "} // setupUi\n\n";    if (m_delayedActionInitialization.isEmpty()) {        m_refreshInitialization += m_option.indent;        m_refreshInitialization += QLatin1String("Q_UNUSED(");        m_refreshInitialization += varName ;        m_refreshInitialization +=QLatin1String(");\n");    }    m_output << m_option.indent << "void " << "retranslateUi(" << widgetClassName << " *" << varName << ")\n"           << m_option.indent << "{\n"           << m_refreshInitialization           << m_option.indent << "} // retranslateUi\n\n";    m_layoutChain.pop();    m_widgetChain.pop();    m_actionGroupChain.pop();}void WriteInitialization::acceptWidget(DomWidget *node){    m_layoutMarginType = m_widgetChain.count() == 1 ? TopLevelMargin : ChildMargin;    const QString className = node->attributeClass();    const QString varName = m_driver->findOrInsertWidget(node);    m_registeredWidgets.insert(varName, node); // register the current widget    QString parentWidget, parentClass;    if (m_widgetChain.top()) {        parentWidget = m_driver->findOrInsertWidget(m_widgetChain.top());        parentClass = m_widgetChain.top()->attributeClass();    }    const QString savedParentWidget = parentWidget;    if (m_uic->isContainer(parentClass) || m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3ToolBar")))        parentWidget.clear();    if (m_widgetChain.size() != 1)        m_output << m_option.indent << varName << " = new " << m_uic->customWidgetsInfo()->realClassName(className) << '(' << parentWidget << ");\n";    parentWidget = savedParentWidget;    if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QComboBox"))) {        initializeComboBox(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QListWidget"))) {        initializeListWidget(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QTreeWidget"))) {        initializeTreeWidget(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QTableWidget"))) {        initializeTableWidget(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3ListBox"))) {        initializeQ3ListBox(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3ListView"))) {        initializeQ3ListView(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3IconView"))) {        initializeQ3IconView(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3Table"))) {        initializeQ3Table(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3DataTable"))) {        initializeQ3SqlDataTable(node);    } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3DataBrowser"))) {        initializeQ3SqlDataBrowser(node);    }    if (m_uic->isButton(className)) {        const DomPropertyMap attributes = propertyMap(node->elementAttribute());        if (const DomProperty *prop = attributes.value(QLatin1String("buttonGroup"))) {            const QString groupName = toString(prop->elementString());            if (!m_buttonGroups.contains(groupName)) {                m_buttonGroups.insert(groupName, m_driver->findOrInsertName(groupName));                const QString g = m_buttonGroups.value(groupName);                m_output << m_option.indent << "QButtonGroup *" << g << " = new QButtonGroup(" << m_generatedClass << ");\n";            }            const QString g = m_buttonGroups.value(groupName);            m_output << m_option.indent << g << "->addButton(" << varName << ");\n";        }    }    writeProperties(varName, className, node->elementProperty());    if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QMenu")) && parentWidget.size()) {        initializeMenu(node, parentWidget);    }    if (node->elementLayout().isEmpty())        m_layoutChain.push(0);    m_layoutWidget = false;    if (className == QLatin1String("QWidget") && !node->hasAttributeNative()) {        if (m_widgetChain.top() && m_widgetChain.top()->attributeClass() != "QMainWindow" && !m_uic->isContainer(m_widgetChain.top()->attributeClass()))            m_layoutWidget = true;    }    m_widgetChain.push(node);    m_layoutChain.push(0);    TreeWalker::acceptWidget(node);    m_layoutChain.pop();    m_widgetChain.pop();    m_layoutWidget = false;    const DomPropertyMap attributes = propertyMap(node->elementAttribute());    QString title = QLatin1String("Page");    if (const DomProperty *ptitle = attributes.value(QLatin1String("title"))) {        title = toString(ptitle->elementString());    }    QString label = QLatin1String("Page");    if (const DomProperty *plabel = attributes.value(QLatin1String("label"))) {        label = toString(plabel->elementString());    }    int id = -1;    if (const DomProperty *pid = attributes.value(QLatin1String("id"))) {        id = pid->elementNumber();    }    if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QMainWindow"))            || m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3MainWindow"))) {        if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QMenuBar"))) {            if (!m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3MainWindow")))                m_output << m_option.indent << parentWidget << "->setMenuBar(" << varName <<");\n";        } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QToolBar"))) {            m_output << m_option.indent << parentWidget << "->addToolBar("                     << toolBarAreaStringFromDOMAttributes(attributes) << varName << ");\n";            if (const DomProperty *pbreak = attributes.value(QLatin1String("toolBarBreak"))) {                if (pbreak->elementBool() == QLatin1String("true")) {                    m_output << m_option.indent << parentWidget << "->insertToolBarBreak(" <<  varName << ");\n";                }            }        } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QDockWidget"))) {            QString area;            if (DomProperty *pstyle = attributes.value(QLatin1String("dockWidgetArea"))) {                area += QLatin1String("static_cast<Qt::DockWidgetArea>(");                area += QString::number(pstyle->elementNumber());                area += QLatin1String("), ");            }            m_output << m_option.indent << parentWidget << "->addDockWidget(" << area << varName << ");\n";        } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"))) {            m_output << m_option.indent << parentWidget << "->setStatusBar(" << varName << ");\n";        } else if (className == QLatin1String("QWidget")) {            m_output << m_option.indent << parentWidget << "->setCentralWidget(" << varName << ");\n";        }    }    if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QStackedWidget"))) {        m_output << m_option.indent << parentWidget << "->addWidget(" << varName << ");\n";    } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QToolBar"))) {        m_output << m_option.indent << parentWidget << "->addWidget(" << varName << ");\n";    } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3WidgetStack"))) {        m_output << m_option.indent << parentWidget << "->addWidget(" << varName << ", " << id << ");\n";    } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QDockWidget"))) {        m_output << m_option.indent << parentWidget << "->setWidget(" << varName << ");\n";    } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QSplitter"))) {        m_output << m_option.indent << parentWidget << "->addWidget(" << varName << ");\n";    } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QToolBox"))) {        QString icon;        if (const DomProperty *picon = attributes.value(QLatin1String("icon"))) {            icon += QLatin1String(", ") ;            icon += pixCall(picon);        }        m_output << m_option.indent << parentWidget << "->addItem(" << varName << icon << ", " << trCall(label) << ");\n";        m_refreshOut << m_option.indent << parentWidget << "->setItemText("                   << parentWidget << "->indexOf(" << varName << "), " << trCall(label) << ");\n";#ifndef QT_NO_TOOLTIP        if (DomProperty *ptoolTip = attributes.value(QLatin1String("toolTip"))) {            m_refreshOut << m_option.indent << parentWidget << "->setItemToolTip("

⌨️ 快捷键说明

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