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// Qt-Security score:significant reason:default
4
6#include "formwindow.h"
7
8#include <private/ui4_p.h>
9#include <qdesigner_resource.h>
10#include <qtresourcemodel_p.h>
11
12#include <QtDesigner/abstractformeditor.h>
13#include <QtDesigner/private/ui4_p.h>
14
15#include <QtWidgets/qlabel.h>
16#include <QtGui/qpixmap.h>
17
19
20namespace qdesigner_internal {
21
23{
24 QLabel *label = new QLabel(nullptr, Qt::ToolTip);
25 QPixmap pm = w->grab(QRect(0, 0, -1, -1));
26 label->setPixmap(pm);
27 label->resize((QSizeF(pm.size()) / pm.devicePixelRatio()).toSize());
28
29 return label;
30}
31
32static DomUI *widgetToDom(QWidget *widget, FormWindow *form)
33{
34 QDesignerResource builder(form);
35 builder.setSaveRelative(false);
36 return builder.copy(FormBuilderClipboard(widget));
37}
38
39FormWindowDnDItem::FormWindowDnDItem(QDesignerDnDItemInterface::DropType type, FormWindow *form,
40 QWidget *widget, QPoint global_mouse_pos)
41 : QDesignerDnDItem(type, form)
42{
43 QWidget *decoration = decorationFromWidget(widget);
44 QPoint pos = widget->mapToGlobal(QPoint(0, 0));
45 decoration->move(pos);
46
47 init(nullptr, widget, decoration, global_mouse_pos);
48}
49
50DomUI *FormWindowDnDItem::domUi() const
51{
52 DomUI *result = QDesignerDnDItem::domUi();
53 if (result != nullptr)
54 return result;
55 FormWindow *form = qobject_cast<FormWindow*>(source());
56 if (widget() == nullptr || form == nullptr)
57 return nullptr;
58
59 QtResourceModel *resourceModel = form->core()->resourceModel();
60 QtResourceSet *currentResourceSet = resourceModel->currentResourceSet();
61 /* Short:
62 * We need to activate the original resourceSet associated with a form
63 * to properly generate the dom resource includes.
64 * Long:
65 * widgetToDom() calls copy() on QDesignerResource. It generates the
66 * Dom structure. In order to create DomResources properly we need to
67 * have the associated ResourceSet active (QDesignerResource::saveResources()
68 * queries the resource model for a qrc path for the given resource file:
69 * qrcFile = m_core->resourceModel()->qrcPath(ri->text());
70 * This works only when the resource file comes from the active
71 * resourceSet */
72 resourceModel->setCurrentResourceSet(form->resourceSet());
73
74 result = widgetToDom(widget(), form);
75 const_cast<FormWindowDnDItem*>(this)->setDomUi(result);
76 resourceModel->setCurrentResourceSet(currentResourceSet);
77 return result;
78}
79
80} // namespace qdesigner_internal
81
82QT_END_NAMESPACE
friend class QWidget
Definition qpainter.h:432
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)