@@ -189,6 +189,26 @@ ChatConversationPanel::ChatConversationPanel (const string& sessionId,
189189 setup_ui ();
190190}
191191
192+ /* *
193+ * @brief 思考/搜索开关按钮的内联样式。
194+ *
195+ * 纯图标模式(dock 侧边栏)需显式 border: none 覆盖主题 CSS 中的边框;
196+ * 文字模式(Chat 标签页)不声明 border,由主题 CSS 提供。
197+ */
198+ static QString
199+ toggle_btn_qss (bool iconOnly, int btnH) {
200+ if (iconOnly) {
201+ return QString (" QToolButton { border: none; border-radius: %1px; "
202+ " padding: 2px; margin: 0px; }" )
203+ .arg (btnH / 2 );
204+ }
205+ int fontPx= DpiUtils::scaled (12 );
206+ return QString (" QToolButton { border-radius: %1px; padding: 2px 2px 2px "
207+ " 6px; margin: 0px; font-size: %2px; }" )
208+ .arg (btnH / 2 )
209+ .arg (fontPx);
210+ }
211+
192212QTMStateToolButton*
193213make_toggle_btn (QWidget* parent, const char * objName, const QString& text) {
194214 int btnH= DpiUtils::scaled (kSendButtonSize );
@@ -201,18 +221,26 @@ make_toggle_btn (QWidget* parent, const char* objName, const QString& text) {
201221 btn->setIconSize (QSize (DpiUtils::scaled (kSendIconSize ),
202222 DpiUtils::scaled (kSendIconSize )));
203223 btn->setText (text);
224+ // 纯图标模式(dock 侧边栏)下文字不显示,靠 tooltip 辨认按钮含义
225+ btn->setToolTip (text);
204226 btn->setToolButtonStyle (Qt::ToolButtonTextBesideIcon);
205227 btn->setFixedHeight (btnH);
206228 btn->setSizePolicy (QSizePolicy::Preferred, QSizePolicy::Fixed);
207- int fontPx= DpiUtils::scaled (12 );
208- btn->setStyleSheet (
209- QString (" QToolButton { border-radius: %1px; padding: 2px 2px 2px 6px; "
210- " margin: 0px; font-size: %2px; }" )
211- .arg (btnH / 2 )
212- .arg (fontPx));
229+ btn->setStyleSheet (toggle_btn_qss (false , btnH));
213230 return btn;
214231}
215232
233+ void
234+ ChatConversationPanel::setToggleButtonsIconOnly (bool iconOnly) {
235+ Qt::ToolButtonStyle style=
236+ iconOnly ? Qt::ToolButtonIconOnly : Qt::ToolButtonTextBesideIcon;
237+ int btnH= DpiUtils::scaled (kSendButtonSize );
238+ thinkingButton_->setToolButtonStyle (style);
239+ thinkingButton_->setStyleSheet (toggle_btn_qss (iconOnly, btnH));
240+ searchButton_->setToolButtonStyle (style);
241+ searchButton_->setStyleSheet (toggle_btn_qss (iconOnly, btnH));
242+ }
243+
216244void
217245ChatConversationPanel::setup_ui () {
218246 QVBoxLayout* contentLayout= new QVBoxLayout (this );
@@ -1667,6 +1695,7 @@ QTChatTabWidget::createPanel (const string& sessionId) {
16671695 sessionId, msgBufUrl, inBufUrl, conversationStack_);
16681696 conversationStack_->addWidget (panel);
16691697 conversations_.append (panel);
1698+ panel->setToggleButtonsIconOnly (dockMode_);
16701699 return panel;
16711700}
16721701
@@ -1915,6 +1944,13 @@ QTChatTabWidget::setSidebarVisible (bool visible) {
19151944 if (floatingBtnContainer_) floatingBtnContainer_->hide ();
19161945}
19171946
1947+ void
1948+ QTChatTabWidget::setDockMode (bool dock) {
1949+ dockMode_= dock;
1950+ for (int i= 0 ; i < conversations_.size (); i++)
1951+ conversations_[i]->setToggleButtonsIconOnly (dock);
1952+ }
1953+
19181954void
19191955QTChatTabWidget::setCloseSidebarButtonVisible (bool visible) {
19201956 if (closeSidebarBtn_) closeSidebarBtn_->setVisible (visible);
0 commit comments