diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2016-08-16 16:55:24 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2016-08-31 08:09:14 +0000 |
commit | 44f41d30ed3efce2f1970dcd158555b41b38014d (patch) | |
tree | 6fb144376b6488c55ff404f2df671666fc7d6afa | |
parent | 2209add7a5b019afef7830d8bbf416fbb2a2ecf5 (diff) |
Qt Designer plugin: Add a dummy class for querying properties
Add a lightweight "fake" QWebEngineView class that is returned when Qt Designer
queries the default property values by calling
QDesignerCustomWidgetInterface::createWidget() with 0 parent,
preventing crashes during QWebEngine initialization.
Task-number: QTBUG-53984
Change-Id: Iced64b7d8af4c958fe7e29fa2f64bb9b681fbab2
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
-rw-r--r-- | src/plugins/qwebengineview/qwebengineview_plugin.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qwebengineview/qwebengineview_plugin.h | 34 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/plugins/qwebengineview/qwebengineview_plugin.cpp index 2d331571b..c885816c5 100644 --- a/src/plugins/qwebengineview/qwebengineview_plugin.cpp +++ b/src/plugins/qwebengineview/qwebengineview_plugin.cpp @@ -91,7 +91,9 @@ bool QWebEngineViewPlugin::isContainer() const QWidget *QWebEngineViewPlugin::createWidget(QWidget *parent) { - return new QWebEngineView(parent); + if (parent) + return new QWebEngineView(parent); + return new fake::QWebEngineView; } bool QWebEngineViewPlugin::isInitialized() const diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.h b/src/plugins/qwebengineview/qwebengineview_plugin.h index 8fa94625c..7c6f02e2a 100644 --- a/src/plugins/qwebengineview/qwebengineview_plugin.h +++ b/src/plugins/qwebengineview/qwebengineview_plugin.h @@ -38,9 +38,43 @@ #define QWEBENGINEVIEW_PLUGIN_H #include <QtUiPlugin/QDesignerCustomWidgetInterface> +#include <QtWidgets/QWidget> +#include <QtGui/QIcon> +#include <QtCore/QUrl> QT_BEGIN_NAMESPACE +namespace fake { +// A lightweight "fake" QWebEngineView class that is returned when Qt Designer +// queries the default property values by calling +// QDesignerCustomWidgetInterface::createWidget() with 0 parent, preventing +// crashes during QWebEngine initialization (QTBUG-53984). +// The property list needs to be kept in sync with QWebEngineView. +class QWebEngineView : public QWidget { + Q_OBJECT + Q_PROPERTY(QString title READ title) + Q_PROPERTY(QUrl url READ url WRITE setUrl) // Designable + Q_PROPERTY(QUrl iconUrl READ iconUrl) + Q_PROPERTY(QIcon icon READ icon) + Q_PROPERTY(QString selectedText READ selectedText) + Q_PROPERTY(bool hasSelection READ hasSelection) + Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) // Designable + +public: + explicit QWebEngineView(QWidget *parent = Q_NULLPTR) : QWidget(parent) {} + + QString title() const { return QString(); } + QUrl url() const { return QUrl(); } + void setUrl(const QUrl &) {} + QUrl iconUrl() const { return QUrl(); } + QIcon icon() const { return QIcon(); } + QString selectedText() { return QString(); } + bool hasSelection() { return false; } + qreal zoomFactor() const { return 1; } + void setZoomFactor(qreal) {} +}; +} // namespace fake + class QWebEngineViewPlugin: public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT |