📄 qdesigner_resource.cpp
字号:
int row, column, rowspan, colspan; grid->getItemPosition(index, &row, &column, &rowspan, &colspan); ui_item->setAttributeRow(row); ui_item->setAttributeColumn(column); if (colspan != 1) ui_item->setAttributeColSpan(colspan); if (rowspan != 1) ui_item->setAttributeRowSpan(rowspan); } } return ui_item;}void QDesignerResource::createCustomWidgets(DomCustomWidgets *dom_custom_widgets){ if (dom_custom_widgets == 0) return; QList<DomCustomWidget*> custom_widget_list = dom_custom_widgets->elementCustomWidget(); QDesignerWidgetDataBaseInterface *db = m_formWindow->core()->widgetDataBase(); foreach(DomCustomWidget *custom_widget, custom_widget_list) { WidgetDataBaseItem *item = new WidgetDataBaseItem(custom_widget->elementClass()); QString base_class = custom_widget->elementExtends(); item->setExtends(base_class); item->setPromoted(!base_class.isEmpty()); item->setGroup(base_class.isEmpty() ? QApplication::translate("Designer", "Custom Widgets") : QApplication::translate("Designer", "Promoted Widgets")); if (DomHeader *header = custom_widget->elementHeader()) item->setIncludeFile(header->text()); item->setContainer(custom_widget->elementContainer()); item->setCustom(true); db->append(item); }}DomTabStops *QDesignerResource::saveTabStops(){ QDesignerMetaDataBaseItemInterface *item = core()->metaDataBase()->item(m_formWindow); Q_ASSERT(item); QStringList tabStops; foreach (QWidget *widget, item->tabOrder()) { if (m_formWindow->mainContainer()->isAncestorOf(widget)) tabStops.append(widget->objectName()); } if (tabStops.count()) { DomTabStops *dom = new DomTabStops; dom->setElementTabStop(tabStops); return dom; } return 0;}void QDesignerResource::applyTabStops(QWidget *widget, DomTabStops *tabStops){ if (!tabStops) return; QList<QWidget*> tabOrder; foreach (QString widgetName, tabStops->elementTabStop()) { if (QWidget *w = qFindChild<QWidget*>(widget, widgetName)) { tabOrder.append(w); } } QDesignerMetaDataBaseItemInterface *item = core()->metaDataBase()->item(m_formWindow); Q_ASSERT(item); item->setTabOrder(tabOrder);}DomWidget *QDesignerResource::saveWidget(QWidget *widget, QDesignerContainerExtension *container, DomWidget *ui_parentWidget){ DomWidget *ui_widget = QAbstractFormBuilder::createDom(widget, ui_parentWidget, false); QList<DomWidget*> ui_widget_list; 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(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(QDesignerToolBar *toolBar, DomWidget *ui_parentWidget){ DomWidget *ui_widget = QAbstractFormBuilder::createDom(toolBar, ui_parentWidget, false); if (QMainWindow *mainWindow = qobject_cast<QMainWindow*>(toolBar->parentWidget())) { Qt::ToolBarArea area = mainWindow->toolBarArea(toolBar); DomProperty *attr = new DomProperty(); attr->setAttributeName(QLatin1String("toolBarArea")); attr->setElementNumber(int(area)); ui_widget->setElementAttribute(ui_widget->elementAttribute() << attr); } 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())) { 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;}DomProperty *QDesignerResource::createIconProperty(const QVariant &v) const{ DomProperty *dom_prop = new DomProperty(); DomResourcePixmap *r = new DomResourcePixmap; QString icon_path; QString qrc_path; if (v.type() == QVariant::Icon) { QIcon icon = qvariant_cast<QIcon>(v); icon_path = iconToFilePath(icon); qrc_path = iconToQrcPath(icon); } else { QPixmap pixmap = qvariant_cast<QPixmap>(v); icon_path = pixmapToFilePath(pixmap); qrc_path = pixmapToQrcPath(pixmap); } if (qrc_path.isEmpty()) icon_path = workingDirectory().relativeFilePath(icon_path); else qrc_path = workingDirectory().relativeFilePath(qrc_path); r->setText(icon_path); if (!qrc_path.isEmpty()) r->setAttributeResource(qrc_path); if (v.type() == QVariant::Icon) dom_prop->setElementIconSet(r); else dom_prop->setElementPixmap(r); 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(); 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 (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(obj->parent())) check_widget = promoted; if (m_selected && m_selected == check_widget) return true; return !LayoutInfo::isWidgetLaidout(core(), check_widget); } if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), obj)) { int pindex = sheet->indexOf(prop); if (sheet->isAttribute(pindex)) return false; return sheet->isChanged(pindex); } 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) { int rowSpan = ui_item->hasAttributeRowSpan() ? ui_item->attributeRowSpan() : 1; 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){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -