7#include <QtDesigner/abstractformeditor.h>
8#include <QtDesigner/container.h>
9#include <QtDesigner/abstractmetadatabase.h>
10#include <QtDesigner/qextensionmanager.h>
12#include <QtWidgets/qboxlayout.h>
13#include <QtWidgets/qformlayout.h>
14#include <QtWidgets/qmainwindow.h>
15#include <QtWidgets/qmenubar.h>
16#include <QtWidgets/qscrollarea.h>
17#include <QtWidgets/qsplitter.h>
18#include <QtWidgets/qstatusbar.h>
19#include <QtCore/qdebug.h>
20#include <QtCore/qhash.h>
21#include <QtCore/qrect.h>
25using namespace Qt::StringLiterals;
29
30
31
50 static const QHash<QString, LayoutInfo::Type> nameTypeMap = {
51 {u"QVBoxLayout"_s, LayoutInfo::VBox},
52 {u"QHBoxLayout"_s, LayoutInfo::HBox},
53 {u"QGridLayout"_s, LayoutInfo::Grid},
54 {u"QFormLayout"_s, LayoutInfo::Form}
70
71
72
125 qDebug() <<
"trying to delete an unmanaged layout:" <<
"widget:" <<
widget <<
"layout:" <<
layout;
185 QWidget *parent = widget->parentWidget();
186 if (parent ==
nullptr)
191 if (qobject_cast<
const QMainWindow *>(parent) !=
nullptr) {
192 return qobject_cast<
const QMenuBar *>(widget) !=
nullptr
193 || qobject_cast<
const QStatusBar *>(widget) !=
nullptr;
198 if (
const auto *scrollArea = qobject_cast<
const QScrollArea *>(parent->parentWidget())) {
199 return scrollArea->viewport() == parent && scrollArea->widget() == widget
200 && scrollArea->widgetResizable();
240
242 if (
item ==
nullptr) {
254 if (
item ==
nullptr) {
255 qDebug() <<
"** WARNING Zero-item passed on to isEmptyItem(). This indicates a layout inconsistency.";
264 QFormLayout::ItemRole role;
265 formLayout->getItemPosition(index, &row, &role);
266 const int columnspan = role == QFormLayout::SpanningRole ? 2 : 1;
267 const int column = (columnspan > 1 || role == QFormLayout::LabelRole) ? 0 : 1;
275 *colspanPtr = columnspan;
281 return QFormLayout::SpanningRole;
282 return column == 0 ? QFormLayout::LabelRole : QFormLayout::FieldRole;
289 const bool spanning = r.width() > 1;
291 formLayout->insertRow(r.y(), w);
300 formLayout->insertRow(r.y(), label, field);
303 formLayout->setWidget(r.y(), formLayoutRole(r.x(), r.width()), w);
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
static QFormLayout::ItemRole formLayoutRole(int column, int colspan)
QDESIGNER_SHARED_EXPORT void getFormLayoutItemPosition(const QFormLayout *formLayout, int index, int *rowPtr, int *columnPtr=nullptr, int *rowspanPtr=nullptr, int *colspanPtr=nullptr)
static bool isContainerPositionedChild(QWidget *widget)
QDESIGNER_SHARED_EXPORT void formLayoutAddWidget(QFormLayout *formLayout, QWidget *w, const QRect &r, bool insert)
static const QHash< QString, LayoutInfo::Type > & layoutNameTypeMap()
#define QDESIGNER_SHARED_EXPORT