From 17335aca05e4267814fc42bd63f302ba602e96bd Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Sat, 10 Feb 2024 15:28:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=BB=B6=E8=BF=9F=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libSplitView/SplitWindow.cpp | 9 +++++---- libSplitView/SplitWindow.h | 1 + u_test/main.cpp | 14 +++++++------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/libSplitView/SplitWindow.cpp b/libSplitView/SplitWindow.cpp index c262c9e..f121471 100644 --- a/libSplitView/SplitWindow.cpp +++ b/libSplitView/SplitWindow.cpp @@ -17,11 +17,12 @@ using namespace split_window; using namespace split_frame; -SplitWindow::SplitWindow(QWidget *parent) : QMainWindow(parent), accept_port(new accept_panel::AcceptPanel(this, this)), view_root(nullptr) { +SplitWindow::SplitWindow(QWidget *parent) + : QMainWindow(parent), active(true), accept_port(new accept_panel::AcceptPanel(this, this)), view_root(nullptr) { accept_port->setVisible(false); } -SplitWindow::~SplitWindow() {} +SplitWindow::~SplitWindow() {this->active = false;} void SplitWindow::tempShow(split_frame::DockType t, split_frame::ViewBase *target) { @@ -97,13 +98,13 @@ void SplitWindow::removeListener(split_frame::FreedomViewsListener *lsn) void SplitWindow::appendPresentView(split_frame::ViewBase *inst) { - if(inst) + if(this->active && inst) this->presents_store[inst->hashCode()] = inst; } void SplitWindow::removePresentView(split_frame::ViewBase *inst) { - if(inst) + if(this->active && inst) this->presents_store.remove(inst->hashCode()); } diff --git a/libSplitView/SplitWindow.h b/libSplitView/SplitWindow.h index 3cde67e..d054695 100644 --- a/libSplitView/SplitWindow.h +++ b/libSplitView/SplitWindow.h @@ -18,6 +18,7 @@ namespace split_window { typedef float width; private: + bool active = false; QList listener_list; QHash presents_store; diff --git a/u_test/main.cpp b/u_test/main.cpp index fe056bb..61c3aa5 100644 --- a/u_test/main.cpp +++ b/u_test/main.cpp @@ -18,15 +18,15 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); - auto w = new split_window::SplitWindow; - auto spb = new split_panel::SplitPanel(w, split_frame::SplitType::SPLIT_H_LFIRST); - auto bview = new dock_panel::DockableView(w, new QWidget, true); - auto dview = new dock_panel::DockableView(w, new QWidget, true); + split_window::SplitWindow w; + auto spb = new split_panel::SplitPanel(&w, split_frame::SplitType::SPLIT_H_LFIRST); + auto bview = new dock_panel::DockableView(&w, new QWidget, true); + auto dview = new dock_panel::DockableView(&w, new QWidget, true); spb->initViews(bview, dview); - w->setPresentTarget(spb); - a.installEventFilter(w); + w.setPresentTarget(spb); + a.installEventFilter(&w); - w->show(); + w.show(); return a.exec(); }