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

📄 widgetbox_dnditem.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtDesigner/ui4.h>#include <spacer_widget_p.h>#include <qdesigner_formbuilder_p.h>#include "widgetbox_dnditem.h"using namespace qdesigner_internal;/********************************************************************************* WidgetBoxResource*/class WidgetBoxResource : public QDesignerFormBuilder{public:    WidgetBoxResource(QDesignerFormEditorInterface *core)        : QDesignerFormBuilder(core) {}    virtual QWidget *createWidget(DomWidget *ui_widget, QWidget *parentWidget)    { return QDesignerFormBuilder::createWidget(ui_widget, parentWidget); }protected:    using QDesignerFormBuilder::create;    using QDesignerFormBuilder::createWidget;    virtual QWidget *create(DomWidget *ui_widget, QWidget *parents);    virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name);};QWidget *WidgetBoxResource::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name){    if (widgetName == QLatin1String("Spacer")) {        Spacer *spacer = new Spacer(parentWidget);        spacer->setObjectName(name);        return spacer;    }    return QDesignerFormBuilder::createWidget(widgetName, parentWidget, name);}QWidget *WidgetBoxResource::create(DomWidget *ui_widget, QWidget *parent){    QWidget *result = 0;    result = QDesignerFormBuilder::create(ui_widget, parent);    result->setFocusPolicy(Qt::NoFocus);    result->setObjectName(ui_widget->attributeName());    return result;}/********************************************************************************* WidgetBoxResource*/static QSize geometryProp(DomWidget *dw){    QList<DomProperty*> prop_list = dw->elementProperty();    foreach (DomProperty *prop, prop_list) {        if (prop->attributeName() != QLatin1String("geometry"))            continue;        DomRect *dr = prop->elementRect();        if (dr == 0)            continue;        return QSize(dr->elementWidth(), dr->elementHeight());    }    return QSize();}static QSize domWidgetSize(DomWidget *dw){    QSize size = geometryProp(dw);    if (size.isValid())        return size;    foreach (DomWidget *child, dw->elementWidget()) {        size = geometryProp(child);        if (size.isValid())            return size;    }    foreach (DomLayout *dl, dw->elementLayout()) {        foreach (DomLayoutItem *item, dl->elementItem()) {            DomWidget *child = item->elementWidget();            if (child == 0)                continue;            size = geometryProp(child);            if (size.isValid())                return size;        }    }    return QSize();}static QWidget *decorationFromDomWidget(DomWidget *dom_widget, QDesignerFormEditorInterface *core){    QWidget *result = new QWidget(0, Qt::ToolTip);    WidgetBoxResource builder(core);    QWidget *w = builder.createWidget(dom_widget, result);    QSize size = domWidgetSize(dom_widget);    QSize minimumSize = w->minimumSizeHint();    if (!size.isValid())        size = w->sizeHint();    if (size.width() < minimumSize.width())        size.setWidth(minimumSize.width());    if (size.height() < minimumSize.height())        size.setHeight(minimumSize.height());    w->setGeometry(QRect(QPoint(0, 0), size));    result->resize(size);    result->setWindowOpacity(0.8);    return result;}WidgetBoxDnDItem::WidgetBoxDnDItem(QDesignerFormEditorInterface *core,                                    DomWidget *dom_widget,                                    const QPoint &global_mouse_pos)    : QDesignerDnDItem(CopyDrop){    DomWidget *root_dom_widget = new DomWidget;    QList<DomWidget*> child_list;    child_list.append(dom_widget);    root_dom_widget->setElementWidget(child_list);    DomUI *dom_ui = new DomUI();    dom_ui->setElementWidget(root_dom_widget);    QWidget *decoration = decorationFromDomWidget(dom_widget, core);    QSize size = decoration->size();    QPoint pos(global_mouse_pos.x() - size.width()/2,                    global_mouse_pos.y() - size.height()/2);    decoration->move(pos);    init(dom_ui, 0, decoration, global_mouse_pos);}

⌨️ 快捷键说明

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