chengxr hai 1 ano
pai
achega
409111f347
Modificáronse 4 ficheiros con 23 adicións e 2 borrados
  1. 14 1
      QFD/view/MainWindow.cpp
  2. 4 0
      QFD/view/MainWindow.h
  3. 4 1
      QFD/view/ProjectView.cpp
  4. 1 0
      QFD/view/ProjectView.h

+ 14 - 1
QFD/view/MainWindow.cpp

@@ -47,6 +47,11 @@ void StackedWidget::addWidget(QWidget *widget)
     m_view->addWidget(widget);
 }
 
+void StackedWidget::removeWidget(QWidget *widget)
+{
+    m_view->removeWidget(widget);
+}
+
 ///
 /// @todo widget.verticalScrollBar().setValue(0)
 ///
@@ -249,6 +254,14 @@ void MainWindow::slotOpenProject(ProjectInfo *proj)
                                  true, NavigationItemPosition::SCROLL);
         m_stackWidget->setCurrentWidget(p);
 
-        p->setWindowTitle(t);
+        connect(p, &ProjectView::sigClose, this, &MainWindow::slotCloseProject);
     }
 }
+
+void MainWindow::slotCloseProject()
+{
+    ProjectView *p = dynamic_cast<ProjectView *>(sender());
+    m_stackWidget->removeWidget(p);
+    m_naviInterface->removeWidget(sender()->objectName());
+    m_stackWidget->setCurrentIndex(0);
+}

+ 4 - 0
QFD/view/MainWindow.h

@@ -29,6 +29,8 @@ public:
 
     void addWidget(QWidget *widget);
 
+    void removeWidget(QWidget *widget);
+
     void setCurrentWidget(QWidget *widget, bool popOut = false);
 
     void setCurrentIndex(int index, bool popOut = false);
@@ -77,6 +79,8 @@ private slots:
 
     void slotOpenProject(ProjectInfo *proj);
 
+    void slotCloseProject();
+
 private:
     CustomTitleBar *m_titleBar = 0;
 

+ 4 - 1
QFD/view/ProjectView.cpp

@@ -95,4 +95,7 @@ void ProjectView::initLayout()
     m_contentLayout->addStretch();
 }
 
-void ProjectView::connectSigalsAndSlots() { }
+void ProjectView::connectSigalsAndSlots()
+{
+    connect(m_close, &PushButton::clicked, this, &ProjectView::sigClose);
+}

+ 1 - 0
QFD/view/ProjectView.h

@@ -25,6 +25,7 @@ public:
     ProjectInfo *proj() const;
 
 signals:
+    void sigClose();
 
 private:
     void initWidgets();