From e4eac7a688d44f6c0074f08d9d13f27d32613343 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Tue, 22 Oct 2019 14:17:57 +0100 Subject: [PATCH] demo: Fix startup delay --- examples/dockwidgets/MyMainWindow.cpp | 6 ++++++ examples/dockwidgets/MyMainWindow.h | 1 + examples/dockwidgets/MyWidget.cpp | 18 ++++++++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/examples/dockwidgets/MyMainWindow.cpp b/examples/dockwidgets/MyMainWindow.cpp index d0fb4f6a..8679afe4 100644 --- a/examples/dockwidgets/MyMainWindow.cpp +++ b/examples/dockwidgets/MyMainWindow.cpp @@ -88,7 +88,13 @@ MyMainWindow::MyMainWindow(KDDockWidgets::MainWindowOptions options, QWidget *pa saver.restoreFromDisk(); }); + createDockWidgets(); +} + +void MyMainWindow::createDockWidgets() +{ KDDockWidgets::DockWidget::List dockwidgets; + // Create 9 KDDockWidget::DockWidget and the respective widgets they're hosting (MyWidget instances) for (int i = 0; i < 9; i++) dockwidgets << newDockWidget(); diff --git a/examples/dockwidgets/MyMainWindow.h b/examples/dockwidgets/MyMainWindow.h index 30ec0e1c..f03be324 100644 --- a/examples/dockwidgets/MyMainWindow.h +++ b/examples/dockwidgets/MyMainWindow.h @@ -27,6 +27,7 @@ public: explicit MyMainWindow(KDDockWidgets::MainWindowOptions options, QWidget *parent = nullptr); private: + void createDockWidgets(); KDDockWidgets::DockWidgetBase* newDockWidget(); QMenu *m_toggleMenu = nullptr; }; diff --git a/examples/dockwidgets/MyWidget.cpp b/examples/dockwidgets/MyWidget.cpp index bdba065b..d3a85fd7 100644 --- a/examples/dockwidgets/MyWidget.cpp +++ b/examples/dockwidgets/MyWidget.cpp @@ -24,14 +24,24 @@ #include #include +static QHash s_images; + MyWidget::MyWidget(const QString &backgroundFile, const QString &logoFile, QWidget *parent) : QWidget(parent) { - if (!backgroundFile.isEmpty()) - m_background = QImage(backgroundFile); + if (!backgroundFile.isEmpty()) { + auto it = s_images.find(backgroundFile); + if (it == s_images.end()) + it = s_images.insert(backgroundFile, QImage(backgroundFile)); + m_background = it.value(); + } - if (!logoFile.isEmpty()) - m_logo = QImage(logoFile); + if (!logoFile.isEmpty()) { + auto it = s_images.find(logoFile); + if (it == s_images.end()) + it = s_images.insert(logoFile, QImage(logoFile)); + m_logo = it.value(); + } } MyWidget::~MyWidget()