zhuizhu пре 7 месеци
родитељ
комит
ec2bdf2f34
2 измењених фајлова са 18 додато и 9 уклоњено
  1. 17 9
      MainPanel.cpp
  2. 1 0
      widgets/recorderwidget.cpp

+ 17 - 9
MainPanel.cpp

@@ -690,6 +690,7 @@ void MainPanel::onChatWindowCloseRequested()
     // 非推流:回归嵌入显示
     showChatEmbedded();
     if (m_chatButton) m_chatButton->setText(tr("聊天"));
+    applyModeLayout();
 }
 
 void MainPanel::onChatButtonClicked()
@@ -747,11 +748,13 @@ void MainPanel::onChatButtonClicked()
         showChatEmbedded();
         if (m_chatButton)
             m_chatButton->setText(tr("聊天"));
+        applyModeLayout();
     } else {
         // 目前为嵌入状态,弹出为独立窗口
         showChatStandalone();
         if (m_chatButton)
             m_chatButton->setText(tr("嵌入聊天"));
+        applyModeLayout();
     }
 }
 
@@ -793,16 +796,20 @@ void MainPanel::applyModeLayout()
     const int panelW = width() > 0 ? width() : 1200;
 
     if (isPlayer) {
-        // 播放模式:默认折叠右侧,让视频获得更大可视区域
-        if (m_rightWidget) m_rightWidget->hide();
-
-        // 如果聊天仍处于嵌入容器,将其弹出为独立窗口,避免占位
-        if (chatView && m_chatContainer && chatView->parent() == m_chatContainer) {
-            showChatStandalone();
+        // 播放模式:根据聊天是否嵌入来决定右侧面板显示
+        const bool embeddedChat = (chatView && m_chatContainer && chatView->parent() == m_chatContainer);
+        if (embeddedChat) {
+            if (m_rightWidget) m_rightWidget->show();
+            int chatW = panelW / 3;
+            chatW = qBound(300, chatW, 420);
+            const int leftW = qMax(0, panelW - chatW);
+            QList<int> sizes; sizes << leftW << chatW;
+            splitter->setSizes(sizes);
+        } else {
+            if (m_rightWidget) m_rightWidget->hide();
+            QList<int> sizes; sizes << panelW << 0;
+            splitter->setSizes(sizes);
         }
-        // 左侧铺满
-        QList<int> sizes; sizes << panelW << 0;
-        splitter->setSizes(sizes);
         return;
     }
 
@@ -860,6 +867,7 @@ bool MainPanel::eventFilter(QObject *watched, QEvent *event)
             chatView->show();
             if (m_chatButton)
                 m_chatButton->setText(tr("聊天"));
+            applyModeLayout();
         }
         return false; // 继续关闭流程
     }

+ 1 - 0
widgets/recorderwidget.cpp

@@ -101,6 +101,7 @@ void RecorderWidget::initUI()
     // 添加到主布局(预览区域已移除)
     // m_mainLayout->addWidget(m_previewWidget, 1);
     m_mainLayout->addWidget(controlWidget, 0);
+    m_mainLayout->addStretch(1);
     m_mainLayout->addWidget(m_statusBar, 0);
     
     // 连接信号槽已移除,按钮控制已迁移到MainPanel