diff --git a/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.cpp b/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.cpp index 608bf42eb36..d4480ccdb65 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.cpp @@ -34,6 +34,12 @@ void Import3dCanvas::updateRenderImage(const QImage &img) update(); } +void Import3dCanvas::displayError(const QString &error) +{ + m_errorMsg = error; + update(); +} + void Import3dCanvas::paintEvent([[maybe_unused]] QPaintEvent *e) { QWidget::paintEvent(e); @@ -46,6 +52,9 @@ void Import3dCanvas::paintEvent([[maybe_unused]] QPaintEvent *e) } else { painter.drawImage(rect(), m_image, QRect(0, 0, m_image.width(), m_image.height())); } + + if (!m_errorMsg.isEmpty()) + painter.drawText(QRect(0, 0, width(), height()), Qt::AlignHCenter | Qt::AlignVCenter, m_errorMsg); } void Import3dCanvas::resizeEvent(QResizeEvent *) diff --git a/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.h b/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.h index 72fb19acffc..5df000e763a 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.h +++ b/src/plugins/qmldesigner/components/itemlibrary/import3dcanvas.h @@ -17,6 +17,7 @@ public: Import3dCanvas(QWidget *parent); void updateRenderImage(const QImage &img); + void displayError(const QString &error); signals: void requestImageUpdate(); @@ -32,6 +33,7 @@ protected: private: QImage m_image; QPointF m_dragPos; + QString m_errorMsg; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp index 4ff4ffcdc09..ddfe0256191 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp @@ -1036,8 +1036,10 @@ Rectangle { }; auto crashCallback = [&] { - addWarning("Preview process crashed."); - cleanupPreviewPuppet(); + const QString errorMsg(tr("Preview generation process crashed.")); + addWarning(errorMsg); + canvas()->displayError(errorMsg); + QTimer::singleShot(0, this, &ItemLibraryAssetImportDialog::cleanupPreviewPuppet); }; m_connectionManager->setPreviewIconCallback(std::move(previewIconCallback));