Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
formwindow_dnditem.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
5#include "formwindow.h"
6
7#include <private/ui4_p.h>
8#include <qdesigner_resource.h>
9#include <qtresourcemodel_p.h>
10
11#include <QtDesigner/abstractformeditor.h>
12#include <QtDesigner/private/ui4_p.h>
13
14#include <QtWidgets/qlabel.h>
15#include <QtGui/qpixmap.h>
16
18
19namespace qdesigner_internal {
20
22{
23 QLabel *label = new QLabel(nullptr, Qt::ToolTip);
24 QPixmap pm = w->grab(QRect(0, 0, -1, -1));
25 label->setPixmap(pm);
26 label->resize((QSizeF(pm.size()) / pm.devicePixelRatio()).toSize());
27
28 return label;
29}
30
31static DomUI *widgetToDom(QWidget *widget, FormWindow *form)
32{
33 QDesignerResource builder(form);
34 builder.setSaveRelative(false);
35 return builder.copy(FormBuilderClipboard(widget));
36}
37
38FormWindowDnDItem::FormWindowDnDItem(QDesignerDnDItemInterface::DropType type, FormWindow *form,
39 QWidget *widget, QPoint global_mouse_pos)
40 : QDesignerDnDItem(type, form)
41{
42 QWidget *decoration = decorationFromWidget(widget);
43 QPoint pos = widget->mapToGlobal(QPoint(0, 0));
44 decoration->move(pos);
45
46 init(nullptr, widget, decoration, global_mouse_pos);
47}
48
49DomUI *FormWindowDnDItem::domUi() const
50{
51 DomUI *result = QDesignerDnDItem::domUi();
52 if (result != nullptr)
53 return result;
54 FormWindow *form = qobject_cast<FormWindow*>(source());
55 if (widget() == nullptr || form == nullptr)
56 return nullptr;
57
58 QtResourceModel *resourceModel = form->core()->resourceModel();
59 QtResourceSet *currentResourceSet = resourceModel->currentResourceSet();
60 /* Short:
61 * We need to activate the original resourceSet associated with a form
62 * to properly generate the dom resource includes.
63 * Long:
64 * widgetToDom() calls copy() on QDesignerResource. It generates the
65 * Dom structure. In order to create DomResources properly we need to
66 * have the associated ResourceSet active (QDesignerResource::saveResources()
67 * queries the resource model for a qrc path for the given resource file:
68 * qrcFile = m_core->resourceModel()->qrcPath(ri->text());
69 * This works only when the resource file comes from the active
70 * resourceSet */
71 resourceModel->setCurrentResourceSet(form->resourceSet());
72
73 result = widgetToDom(widget(), form);
74 const_cast<FormWindowDnDItem*>(this)->setDomUi(result);
75 resourceModel->setCurrentResourceSet(currentResourceSet);
76 return result;
77}
78
79} // namespace qdesigner_internal
80
81QT_END_NAMESPACE
friend class QWidget
Definition qpainter.h:421
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
static DomUI * widgetToDom(QWidget *widget, FormWindow *form)
static QWidget * decorationFromWidget(QWidget *w)