增大右边dock默认宽度

This commit is contained in:
2026-04-08 10:01:54 +08:00
parent 028ed1b18d
commit 088dd91e27

View File

@@ -68,6 +68,13 @@ namespace {
constexpr int kRightDockMinimumWidth = 80;
/// 列宽小于此值时自动隐藏右侧两 dock
constexpr int kRightDockAutoHideBelow = 92;
/// 右侧 dock 列最大宽度,避免过宽挤占画布
constexpr int kRightDockMaximumWidth = 288;
/// 属性区表单内容最大宽度dock 仍可略宽,两侧留白,避免 SpinBox 被拉得过开)
constexpr int kPropertyPanelContentMaxWidth = 268;
/// 启动时垂直分割高度:项目树较矮、属性区较高
constexpr int kProjectTreeDockStartupHeight = 148;
constexpr int kPropertiesDockStartupHeight = 392;
void polishCompactToolButton(QToolButton* b, int px = 40) {
if (!b) return;
@@ -947,12 +954,13 @@ void MainWindow::createProjectTreeDock() {
Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
m_dockProperties->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable |
QDockWidget::DockWidgetClosable);
m_dockProperties->setMinimumWidth(kRightDockMinimumWidth);
m_dockProperties->setMinimumWidth(236);
m_bgPropertySection = new gui::BackgroundPropertySection();
m_entityPropertySection = new gui::EntityPropertySection();
m_propertyStack = new QStackedWidget();
m_propertyStack->setContentsMargins(4, 4, 4, 4);
m_propertyStack->setMaximumWidth(kPropertyPanelContentMaxWidth);
m_propertyStack->addWidget(m_bgPropertySection);
m_propertyStack->addWidget(m_entityPropertySection);
@@ -1048,7 +1056,9 @@ void MainWindow::createProjectTreeDock() {
addDockWidget(Qt::RightDockWidgetArea, m_dockProjectTree);
splitDockWidget(m_dockProjectTree, m_dockProperties, Qt::Vertical);
resizeDocks({m_dockProjectTree, m_dockProperties}, {220, 200}, Qt::Vertical);
resizeDocks({m_dockProjectTree, m_dockProperties},
{kProjectTreeDockStartupHeight, kPropertiesDockStartupHeight},
Qt::Vertical);
connect(m_dockProjectTree, &QDockWidget::visibilityChanged, this, [this](bool visible) {
if (m_actionToggleProjectTree) {
@@ -1064,6 +1074,26 @@ void MainWindow::createProjectTreeDock() {
m_actionToggleProperties->blockSignals(false);
}
});
// 停靠时限制右侧列最大宽度;浮动时解除,避免属性/项目树窗口过窄难用
const auto applyRightDockColumnMaxWidth = [](QDockWidget* dock) {
if (!dock) {
return;
}
dock->setMaximumWidth(dock->isFloating() ? QWIDGETSIZE_MAX : kRightDockMaximumWidth);
};
applyRightDockColumnMaxWidth(m_dockProjectTree);
applyRightDockColumnMaxWidth(m_dockProperties);
connect(m_dockProjectTree, &QDockWidget::topLevelChanged, this,
[applyRightDockColumnMaxWidth, this](bool) {
applyRightDockColumnMaxWidth(m_dockProjectTree);
applyRightDockColumnMaxWidth(m_dockProperties);
});
connect(m_dockProperties, &QDockWidget::topLevelChanged, this,
[applyRightDockColumnMaxWidth, this](bool) {
applyRightDockColumnMaxWidth(m_dockProjectTree);
applyRightDockColumnMaxWidth(m_dockProperties);
});
}
void MainWindow::refreshPropertyPanel() {