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 + -
显示快捷键?