qdesigner_resource.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 1,680 行 · 第 1/5 页

CPP
1,680
字号
        Q_ASSERT( ui_page != 0 );        ui_widget_list.append(ui_page);    }    ui_widget->setElementWidget(ui_widget_list);    return ui_widget;}DomWidget *QDesignerResource::saveWidget(QDesignerStackedWidget *widget, DomWidget *ui_parentWidget){    DomWidget *ui_widget = QAbstractFormBuilder::createDom(widget, ui_parentWidget, false);    QList<DomWidget*> ui_widget_list;    if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), widget)) {        for (int i=0; i<container->count(); ++i) {            QWidget *page = container->widget(i);            Q_ASSERT(page);            DomWidget *ui_page = createDom(page, ui_widget);            Q_ASSERT( ui_page != 0 );            ui_widget_list.append(ui_page);        }    }    ui_widget->setElementWidget(ui_widget_list);    return ui_widget;}DomWidget *QDesignerResource::saveWidget(QToolBar *toolBar, DomWidget *ui_parentWidget){    DomWidget *ui_widget = QAbstractFormBuilder::createDom(toolBar, ui_parentWidget, false);    if (const QMainWindow *mainWindow = qobject_cast<QMainWindow*>(toolBar->parentWidget())) {        const bool toolBarBreak = mainWindow->toolBarBreak(toolBar);        const Qt::ToolBarArea area = mainWindow->toolBarArea(toolBar);        QList<DomProperty*> attributes = ui_widget->elementAttribute();        DomProperty *attr = new DomProperty();        attr->setAttributeName(QLatin1String("toolBarArea"));        attr->setElementEnum(QLatin1String(toolBarAreaMetaEnum().valueToKey(area)));        attributes  << attr;        attr = new DomProperty();        attr->setAttributeName(QLatin1String("toolBarBreak"));        attr->setElementBool(toolBarBreak ? QLatin1String("true") : QLatin1String("false"));        attributes  << attr;        ui_widget->setElementAttribute(attributes);    }    return ui_widget;}DomWidget *QDesignerResource::saveWidget(QDesignerDockWidget *dockWidget, DomWidget *ui_parentWidget){    DomWidget *ui_widget = QAbstractFormBuilder::createDom(dockWidget, ui_parentWidget, true);    if (QMainWindow *mainWindow = qobject_cast<QMainWindow*>(dockWidget->parentWidget())) {        const Qt::DockWidgetArea area = mainWindow->dockWidgetArea(dockWidget);        DomProperty *attr = new DomProperty();        attr->setAttributeName(QLatin1String("dockWidgetArea"));        attr->setElementNumber(int(area));        ui_widget->setElementAttribute(ui_widget->elementAttribute() << attr);    }    return ui_widget;}// fix the icon path: Set relative directory if it's not a language resource.void QDesignerResource::fixIconPath(IconPaths &ip) const{    // Real qrc, nothing to do    if (!ip.second.isEmpty())         return;        QDesignerFormEditorInterface *core = m_formWindow->core();        QDesignerLanguageExtension *lang = qt_extension<QDesignerLanguageExtension*>(core->extensionManager(), core);    if (lang && lang->isLanguageResource(ip.first))        return; // Don't touch language specific things        //  Set relative directory    ip.first = workingDirectory().relativeFilePath(ip.first);    }DomProperty *QDesignerResource::createIconProperty(const QVariant &v) const{    DomProperty *dom_prop = new DomProperty();    switch (v.type()) {    case QVariant::Icon: {        IconPaths paths = iconPaths(qvariant_cast<QIcon>(v));        fixIconPath(paths);            setIconProperty(*dom_prop, paths);        break;    }    case QVariant::Pixmap: {        IconPaths paths = pixmapPaths(qvariant_cast<QPixmap>(v));        fixIconPath(paths);        setPixmapProperty(*dom_prop, paths);        break;    }    default:        break;    }    return dom_prop;}DomWidget *QDesignerResource::saveWidget(QDesignerTabWidget *widget, DomWidget *ui_parentWidget){    DomWidget *ui_widget = QAbstractFormBuilder::createDom(widget, ui_parentWidget, false);    QList<DomWidget*> ui_widget_list;    if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), widget)) {        for (int i=0; i<container->count(); ++i) {            QWidget *page = container->widget(i);            Q_ASSERT(page);            DomWidget *ui_page = createDom(page, ui_widget);            Q_ASSERT( ui_page != 0 );            QList<DomProperty*> ui_attribute_list;            DomProperty *p = 0;            DomString *str = 0;            // attribute `title'            p = new DomProperty();            p->setAttributeName(QLatin1String("title"));            str = new DomString();            str->setText(widget->tabText(i));            p->setElementString(str);            ui_attribute_list.append(p);            // attribute `icon'            if (!widget->tabIcon(i).isNull()) {                p = createIconProperty(widget->tabIcon(i));                p->setAttributeName(QLatin1String("icon"));                ui_attribute_list.append(p);            }            // attribute `toolTip'            if (!widget->tabToolTip(i).isEmpty()) {                p = new DomProperty();                p->setAttributeName(QLatin1String("toolTip"));                str = new DomString();                str->setText(widget->tabToolTip(i));                p->setElementString(str);                ui_attribute_list.append(p);            }            ui_page->setElementAttribute(ui_attribute_list);            ui_widget_list.append(ui_page);        }    }    ui_widget->setElementWidget(ui_widget_list);    return ui_widget;}DomWidget *QDesignerResource::saveWidget(QDesignerToolBox *widget, DomWidget *ui_parentWidget){    DomWidget *ui_widget = QAbstractFormBuilder::createDom(widget, ui_parentWidget, false);    QList<DomWidget*> ui_widget_list;    if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), widget)) {        for (int i=0; i<container->count(); ++i) {            QWidget *page = container->widget(i);            Q_ASSERT(page);            DomWidget *ui_page = createDom(page, ui_widget);            Q_ASSERT( ui_page != 0 );            // attribute `label'            DomProperty *p = new DomProperty();            p->setAttributeName(QLatin1String("label"));            DomString *str = new DomString();            str->setText(widget->itemText(i));            p->setElementString(str); // ### check f tb->indexOf(page) == i ??            QList<DomProperty*> ui_attribute_list;            ui_attribute_list.append(p);            // attribute `icon'            if (!widget->itemIcon(i).isNull()) {                p = createIconProperty(widget->itemIcon(i));                p->setAttributeName(QLatin1String("icon"));                ui_attribute_list.append(p);            }            // attribute `toolTip'            if (!widget->itemToolTip(i).isEmpty()) {                p = new DomProperty();                p->setAttributeName(QLatin1String("toolTip"));                str = new DomString();                str->setText(widget->itemToolTip(i));                p->setElementString(str);                ui_attribute_list.append(p);            }            ui_page->setElementAttribute(ui_attribute_list);            ui_widget_list.append(ui_page);        }    }    ui_widget->setElementWidget(ui_widget_list);    return ui_widget;}bool QDesignerResource::checkProperty(QObject *obj, const QString &prop) const{    const QMetaObject *meta = obj->metaObject();    const int pindex = meta->indexOfProperty(prop.toLatin1());    if (pindex != -1) {        if (!meta->property(pindex).isStored(obj))            return false;    }    if (prop == QLatin1String("objectName")) { // ### don't store the property objectName        return false;    } else if (prop == QLatin1String("geometry") && obj->isWidgetType()) {         QWidget *check_widget = qobject_cast<QWidget*>(obj);         if (m_selected && m_selected == check_widget)             return true;        return !LayoutInfo::isWidgetLaidout(core(), check_widget);    }    if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), obj)) {        QDesignerDynamicPropertySheetExtension *dynamicSheet = qt_extension<QDesignerDynamicPropertySheetExtension*>(core()->extensionManager(), obj);        const int pindex = sheet->indexOf(prop);        if (sheet->isAttribute(pindex))            return false;        if (!dynamicSheet || !dynamicSheet->isDynamicProperty(pindex))            return sheet->isChanged(pindex);        if (!sheet->isVisible(pindex))            return false;        return true;    }    return false;}bool QDesignerResource::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout){    if (item->widget() == 0) {        return false;    }    QGridLayout *grid = qobject_cast<QGridLayout*>(layout);    QBoxLayout *box = qobject_cast<QBoxLayout*>(layout);    if (grid != 0) {        const int rowSpan = ui_item->hasAttributeRowSpan() ? ui_item->attributeRowSpan() : 1;        const int colSpan = ui_item->hasAttributeColSpan() ? ui_item->attributeColSpan() : 1;        add_to_grid_layout(grid, item->widget(), ui_item->attributeRow(), ui_item->attributeColumn(),                        rowSpan, colSpan, item->alignment());        return true;    } else if (box != 0) {        add_to_box_layout(box, item->widget());        return true;    }    return QAbstractFormBuilder::addItem(ui_item, item, layout);}bool QDesignerResource::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget){    core()->metaDataBase()->add(widget); // ensure the widget is in the meta database    if (! QAbstractFormBuilder::addItem(ui_widget, widget, parentWidget) || qobject_cast<QMainWindow*> (parentWidget)) {        if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), parentWidget))            container->addWidget(widget);    }    return true;}void QDesignerResource::copy(QIODevice *dev, const QList<QWidget*> &selection){    m_copyWidget = true;    DomUI *ui = copy(selection);    QDomDocument doc;    doc.appendChild(ui->write(doc));    dev->write(doc.toString().toUtf8());    m_laidout.clear();    delete ui;    m_copyWidget = false;}DomUI *QDesignerResource::copy(const QList<QWidget*> &selection){    m_copyWidget = true;    DomUI *ui = new DomUI();    ui->setAttributeVersion(QLatin1String("4.0"));    DomWidget *ui_widget = new DomWidget();    QList<DomWidget*> ui_widget_list;    ui_widget->setAttributeName(QLatin1String("__qt_fake_top_level"));    for (int i=0; i<selection.size(); ++i) {        QWidget *w = selection.at(i);        m_selected = w;        DomWidget *ui_child = createDom(w, ui_widget);        m_selected = 0;        if (!ui_child)            continue;        ui_widget_list.append(ui_child);    }    ui_widget->setElementWidget(ui_widget_list);    ui->setElementWidget(ui_widget);    m_laidout.clear();    m_copyWidget = false;    if (QDesignerExtraInfoExtension *extra = qt_extension<QDesignerExtraInfoExtension*>(core()->extensionManager(), core()))        extra->saveUiExtraInfo(ui);    return ui;}QList<QWidget*> QDesignerResource::paste(DomUI *ui, QWidget *parentWidget){    const int saved = m_isMainWidget;

⌨️ 快捷键说明

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