summaryrefslogtreecommitdiffstats
path: root/src/designer/src/components/formeditor
diff options
context:
space:
mode:
Diffstat (limited to 'src/designer/src/components/formeditor')
-rw-r--r--src/designer/src/components/formeditor/formwindow.cpp11
-rw-r--r--src/designer/src/components/formeditor/qdesigner_resource.cpp22
-rw-r--r--src/designer/src/components/formeditor/qdesigner_resource.h3
3 files changed, 30 insertions, 6 deletions
diff --git a/src/designer/src/components/formeditor/formwindow.cpp b/src/designer/src/components/formeditor/formwindow.cpp
index b03be6c82..1f638ec8e 100644
--- a/src/designer/src/components/formeditor/formwindow.cpp
+++ b/src/designer/src/components/formeditor/formwindow.cpp
@@ -2140,6 +2140,14 @@ bool FormWindow::handleContextMenu(QWidget *, QWidget *managedWidget, QContextMe
bool FormWindow::setContents(QIODevice *dev, QString *errorMessageIn /* = 0 */)
{
+ QDesignerResource r(this);
+ QScopedPointer<DomUI> ui(r.readUi(dev));
+ if (ui.isNull()) {
+ if (errorMessageIn)
+ *errorMessageIn = r.errorString();
+ return false;
+ }
+
UpdateBlocker ub(this);
clearSelection();
m_selection->clearSelectionPool();
@@ -2151,8 +2159,7 @@ bool FormWindow::setContents(QIODevice *dev, QString *errorMessageIn /* = 0 */)
m_undoStack.clear();
emit changed();
- QDesignerResource r(this);
- QWidget *w = r.load(dev, formContainer());
+ QWidget *w = r.loadUi(ui.data(), formContainer());
if (w) {
setMainContainer(w);
emit changed();
diff --git a/src/designer/src/components/formeditor/qdesigner_resource.cpp b/src/designer/src/components/formeditor/qdesigner_resource.cpp
index b799e648c..caca4d497 100644
--- a/src/designer/src/components/formeditor/qdesigner_resource.cpp
+++ b/src/designer/src/components/formeditor/qdesigner_resource.cpp
@@ -461,6 +461,11 @@ QDesignerResource::~QDesignerResource()
{
}
+DomUI *QDesignerResource::readUi(QIODevice *dev)
+{
+ return d->readUi(dev);
+}
+
static inline QString messageBoxTitle()
{
return QApplication::translate("Designer", "Qt Designer");
@@ -596,10 +601,19 @@ void QDesignerResource::saveDom(DomUI *ui, QWidget *widget)
QWidget *QDesignerResource::load(QIODevice *dev, QWidget *parentWidget)
{
- QWidget *w = QEditorFormBuilder::load(dev, parentWidget);
- if (w) // Store the class name as 'reset' value for the main container's object name.
- w->setProperty("_q_classname", w->objectName());
- return w;
+ QScopedPointer<DomUI> ui(readUi(dev));
+ return ui.isNull() ? nullptr : loadUi(ui.data(), parentWidget);
+}
+
+QWidget *QDesignerResource::loadUi(DomUI *ui, QWidget *parentWidget)
+{
+ QWidget *widget = create(ui, parentWidget);
+ // Store the class name as 'reset' value for the main container's object name.
+ if (widget)
+ widget->setProperty("_q_classname", widget->objectName());
+ else if (d->m_errorString.isEmpty())
+ d->m_errorString = QFormBuilderExtra::msgInvalidUiFile();
+ return widget;
}
bool QDesignerResource::saveRelative() const
diff --git a/src/designer/src/components/formeditor/qdesigner_resource.h b/src/designer/src/components/formeditor/qdesigner_resource.h
index f444f6334..87620f600 100644
--- a/src/designer/src/components/formeditor/qdesigner_resource.h
+++ b/src/designer/src/components/formeditor/qdesigner_resource.h
@@ -78,6 +78,9 @@ public:
QWidget *load(QIODevice *dev, QWidget *parentWidget) override;
+ DomUI *readUi(QIODevice *dev);
+ QWidget *loadUi(DomUI *ui, QWidget *parentWidget);
+
protected:
using QEditorFormBuilder::create;
using QEditorFormBuilder::createDom;