Browse Source

调整 titlebar

chengxr 1 year ago
parent
commit
a7be5f6a3d
4 changed files with 33 additions and 98 deletions
  1. 20 90
      QFD/view/MainWindow.cpp
  2. 0 7
      QFD/view/MainWindow.h
  3. 11 1
      QFD/widgets/CustomTitleBar.cpp
  4. 2 0
      QFD/widgets/CustomTitleBar.h

+ 20 - 90
QFD/view/MainWindow.cpp

@@ -67,22 +67,6 @@ PopUpAniStackedWidget *StackedWidget::view() const
 
 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
 {
-    //    initialize();
-    //    initWindow();
-    //    initLayout();
-    //    initNavigation();
-
-    initLoginPage();
-
-    //    connectSignalsAndSlots();
-}
-
-MainWindow::~MainWindow() { }
-
-void MainWindow::initLoginPage()
-{
-    setMinimumSize(QSize(800, 600));
-
     m_titleBar               = new CustomTitleBar(this);
     QFramelessHelper *helper = new QFramelessHelper(this);
     helper->setTitleBar(m_titleBar);
@@ -92,12 +76,20 @@ void MainWindow::initLoginPage()
     QIcon icon = QIcon(":/resource/logo.png");
     qApp->setWindowIcon(icon);
 
-    m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
     m_titleBar->setIcon(icon);
-    m_titleBar->setHidden(true);
 
     m_mainStackedWidget = new QStackedWidget(this);
     setCentralWidget(m_mainStackedWidget);
+
+    initLoginPage();
+
+    setMinimumSize(QSize(800, 600));
+}
+
+MainWindow::~MainWindow() { }
+
+void MainWindow::initLoginPage()
+{
     m_loginView = new LoginView(this);
     m_mainStackedWidget->addWidget(m_loginView);
 
@@ -141,65 +133,6 @@ void MainWindow::initMainPage()
     connect(m_userView, &UserView::signalLogout, this, &MainWindow::slotLogout);
 }
 
-void MainWindow::initialize()
-{
-    m_titleBar = new CustomTitleBar(this);
-
-    m_mainStackedWidget = new QStackedWidget(this);
-
-    m_loginView = new LoginView(this);
-
-    m_mainWidget = new QWidget(this);
-    m_hBoxLayout = new QHBoxLayout(m_mainWidget);
-
-    m_widgetLayout  = new QHBoxLayout();
-    m_stackWidget   = new StackedWidget(this);
-    m_naviInterface = new NavigationInterface(true, true, this);
-    m_naviInterface->panel->setExpandWidth(200);
-
-    m_homeView = new HomeView(this);
-
-    m_projectView      = new ProjectView(this);
-    m_evaluateView     = new EvaluateView(this);
-    m_expertManageView = new ExpertManageView(this);
-    m_aboutView        = new AboutView(this);
-    m_settingView      = new SettingView(this);
-    m_userView         = new UserView(this);
-}
-
-void MainWindow::initWindow()
-{
-    setMinimumSize(QSize(1200, 800));
-
-    QFramelessHelper *helper = new QFramelessHelper(this);
-    helper->setTitleBar(m_titleBar);
-
-    setWindowTitle("防护评估系统");
-
-    QIcon icon = QIcon(":/resource/logo.png");
-    qApp->setWindowIcon(icon);
-
-    m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
-    m_titleBar->setIcon(icon);
-    m_titleBar->setHidden(true);
-}
-
-void MainWindow::initLayout()
-{
-    setCentralWidget(m_mainStackedWidget);
-    m_mainStackedWidget->addWidget(m_loginView);
-    m_mainStackedWidget->addWidget(m_mainWidget);
-
-    m_hBoxLayout->setSpacing(0);
-    m_hBoxLayout->setContentsMargins(0, 0, 0, 0);
-    m_hBoxLayout->addWidget(m_naviInterface);
-    m_hBoxLayout->addLayout(m_widgetLayout);
-    m_hBoxLayout->setStretchFactor(m_widgetLayout, 1);
-
-    m_widgetLayout->addWidget(m_stackWidget);
-    m_widgetLayout->setContentsMargins(0, 32, 0, 0);
-}
-
 void MainWindow::initNavigation()
 {
     m_homeView->setObjectName("homeView");
@@ -247,14 +180,6 @@ void MainWindow::initNavigation()
     m_stackWidget->setCurrentIndex(0);
 }
 
-void MainWindow::connectSignalsAndSlots()
-{
-    connect(m_loginView, &LoginView::signalLogin, this, &MainWindow::slotLogin);
-    connect(m_loginView, &LoginView::signalCancelLogin, this, &MainWindow::slotCancelLogin);
-    connect(m_naviInterface, &NavigationInterface::displayModeChanged, m_titleBar, &StandardTitleBar::raise);
-    connect(m_userView, &UserView::signalLogout, this, &MainWindow::slotLogout);
-}
-
 void MainWindow::setNaviInterfaceHidden(bool hidden)
 {
     m_naviInterface->setHidden(hidden);
@@ -263,7 +188,10 @@ void MainWindow::setNaviInterfaceHidden(bool hidden)
 
 int MainWindow::titleBarIndent() const
 {
-    return (m_naviInterface && m_naviInterface->isHidden()) ? 0 : 46;
+    if (m_mainStackedWidget->currentIndex() > 0 && m_naviInterface != nullptr && m_naviInterface->isHidden() == false) {
+        return 46;
+    }
+    return 0;
 }
 
 void MainWindow::resizeEvent(QResizeEvent *event)
@@ -272,8 +200,6 @@ void MainWindow::resizeEvent(QResizeEvent *event)
     m_titleBar->resize(width() - titleBarIndent(), m_titleBar->height());
 }
 
-void MainWindow::showMainWidget() { }
-
 void MainWindow::switchTo(QWidget *widget, bool triggerByUser)
 {
     qDebug() << __FUNCTION__ << __LINE__;
@@ -284,16 +210,20 @@ void MainWindow::slotLogin()
 {
     initMainPage();
     m_mainStackedWidget->setCurrentWidget(m_mainWidget);
-    m_titleBar->setHidden(false);
+    showMaximized();
+
+    m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
 }
 
 void MainWindow::slotLogout()
 {
     m_mainStackedWidget->setCurrentWidget(m_loginView);
     m_mainStackedWidget->removeWidget(m_mainWidget);
-    m_titleBar->setHidden(true);
     delete m_mainWidget;
     m_mainWidget = nullptr;
+
+    showNormal();
+    m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
 }
 
 void MainWindow::slotCancelLogin()

+ 0 - 7
QFD/view/MainWindow.h

@@ -54,21 +54,14 @@ private:
     void initLoginPage();
     void initMainPage();
 
-    void initialize();
-    void initWindow();
-    void initLayout();
     void initNavigation();
 
-    void connectSignalsAndSlots();
-
     void setNaviInterfaceHidden(bool hidden);
 
     int titleBarIndent() const;
 
     void resizeEvent(QResizeEvent *event) override;
 
-    void showMainWidget();
-
     void switchTo(QWidget *widget, bool triggerByUser = true);
 
 private slots:

+ 11 - 1
QFD/widgets/CustomTitleBar.cpp

@@ -2,5 +2,15 @@
 
 CustomTitleBar::CustomTitleBar(QWidget *parent) : StandardTitleBar(parent)
 {
-    setStyleSheet("background-color: rgb(243, 243, 243);");
+    //    setStyleSheet("background-color: rgb(0, 243, 243);");
+
+    setBackgroundColor(QColor("#f3f3f3"));
+}
+
+void CustomTitleBar::setBackgroundColor(QColor color)
+{
+    QPalette pal(palette());
+    pal.setColor(QPalette::Background, color);
+    setAutoFillBackground(true);
+    setPalette(pal);
 }

+ 2 - 0
QFD/widgets/CustomTitleBar.h

@@ -8,6 +8,8 @@ class CustomTitleBar : public StandardTitleBar
     Q_OBJECT
 public:
     CustomTitleBar(QWidget *parent = nullptr);
+
+    void setBackgroundColor(QColor color);
 };
 
 #endif  // CUSTOMTITLEBAR_H