Update
This commit is contained in:
@@ -132,6 +132,7 @@ class FlowLayout(QtWidgets.QLayout):
|
||||
item_width = item.sizeHint().width()
|
||||
item_height = item.sizeHint().height()
|
||||
|
||||
# 检查是否需要换行 - 当前项放不下时
|
||||
next_x = x + item_width + spacing
|
||||
|
||||
if next_x - spacing > rect.right() and line_height > 0:
|
||||
@@ -167,7 +168,7 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
|
||||
# 初始化DNA文件列表和按钮尺寸
|
||||
self.dna_files = []
|
||||
self.dna_button_size = (140, 170) # 增加按钮尺寸,提供更好的视觉效果
|
||||
self.dna_button_size = (90, 120) # 保持3:4的宽高比例
|
||||
|
||||
# 初始化UI
|
||||
self.create_widgets()
|
||||
@@ -229,48 +230,87 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
self.controls["presets_scroll_area"] = QtWidgets.QScrollArea()
|
||||
self.controls["presets_scroll_area"].setWidgetResizable(True)
|
||||
self.controls["presets_scroll_area"].setObjectName("presetsScrollArea")
|
||||
self.controls["presets_scroll_area"].setMinimumHeight(400) # 大幅增加最小高度,确保能容纳多行按钮
|
||||
self.controls["presets_scroll_area"].setMinimumWidth(600) # 设置最小宽度,确保有足够空间显示按钮
|
||||
|
||||
# 预设内容区域
|
||||
self.controls["presets_content"] = QtWidgets.QWidget()
|
||||
self.controls["presets_content"].setObjectName("presetsContent")
|
||||
self.controls["presets_content"].setMinimumHeight(380) # 保持内容区域最小高度
|
||||
self.controls["presets_content"].setStyleSheet("""
|
||||
#presetsContent {
|
||||
background-color: #252526;
|
||||
}
|
||||
""")
|
||||
|
||||
# 使用流式布局替代原来的网格布局
|
||||
self.controls["presets_flow_layout"] = FlowLayout(self.controls["presets_content"])
|
||||
self.controls["presets_flow_layout"].setObjectName("presetsFlowLayout")
|
||||
self.controls["presets_flow_layout"].setContentsMargins(10, 10, 10, 10)
|
||||
self.controls["presets_flow_layout"].setSpacing(15) # 固定间距
|
||||
self.controls["presets_flow_layout"].setContentsMargins(10, 10, 10, 5) # 进一步减小底部边距
|
||||
self.controls["presets_flow_layout"].setSpacing(10) # 保持按钮间距
|
||||
|
||||
# 设置滚动区域内容
|
||||
self.controls["presets_scroll_area"].setWidget(self.controls["presets_content"])
|
||||
|
||||
# 创建布局分隔器,添加垂直空间和分隔线
|
||||
self.controls["presets_separator"] = QtWidgets.QFrame()
|
||||
self.controls["presets_separator"].setFrameShape(QtWidgets.QFrame.HLine)
|
||||
self.controls["presets_separator"].setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.controls["presets_separator"].setFixedHeight(1) # 减小分隔线高度
|
||||
self.controls["presets_separator"].setStyleSheet("background-color: #444444;")
|
||||
|
||||
# 预设底部滑块和按钮
|
||||
self.controls["presets_slider_layout"] = QtWidgets.QHBoxLayout()
|
||||
self.controls["presets_slider_layout"].setContentsMargins(5, 5, 5, 5)
|
||||
self.controls["presets_slider_layout"].setSpacing(5)
|
||||
self.controls["presets_slider_layout"].setContentsMargins(3, 0, 3, 0) # 减小左右内边距
|
||||
self.controls["presets_slider_layout"].setSpacing(4) # 减小间距
|
||||
|
||||
# 数量显示
|
||||
self.controls["presets_count_label"] = QtWidgets.QLabel("0")
|
||||
self.controls["presets_count_label"].setObjectName("presetsCountLabel")
|
||||
self.controls["presets_count_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.controls["presets_count_label"].setStyleSheet("font-weight: bold;")
|
||||
self.controls["presets_count_label"].setStyleSheet("font-weight: bold; font-size: 12px;")
|
||||
self.controls["presets_count_label"].setFixedWidth(40) # 增加宽度
|
||||
|
||||
# 滑块 - 用于调整预览图大小
|
||||
self.controls["presets_slider"] = QtWidgets.QSlider(QtCore.Qt.Horizontal)
|
||||
self.controls["presets_slider"].setObjectName("presetsSlider")
|
||||
self.controls["presets_slider"].setMinimum(20) # 最小值
|
||||
self.controls["presets_slider"].setMaximum(100) # 最大值
|
||||
self.controls["presets_slider"].setValue(60) # 默认值
|
||||
self.controls["presets_slider"].setMinimum(70) # 最小值70,对应缩放因子约0.8
|
||||
self.controls["presets_slider"].setMaximum(130) # 最大值130,对应缩放因子约1.2
|
||||
self.controls["presets_slider"].setValue(100) # 中间值100,对应缩放因子1.0
|
||||
self.controls["presets_slider"].setToolTip("调整预览图大小")
|
||||
self.controls["presets_slider"].setFixedHeight(22) # 设置固定高度使滑块更粗
|
||||
self.controls["presets_slider"].setStyleSheet("""
|
||||
QSlider::groove:horizontal {
|
||||
border: 1px solid #999999;
|
||||
height: 8px;
|
||||
background: #3E3E42;
|
||||
margin: 2px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
QSlider::handle:horizontal {
|
||||
background: #007ACC;
|
||||
border: 1px solid #5AB2F5;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: -5px 0;
|
||||
border-radius: 8px;
|
||||
}
|
||||
QSlider::handle:horizontal:hover {
|
||||
background: #1C97EA;
|
||||
}
|
||||
""")
|
||||
|
||||
# 导出预设按钮
|
||||
self.buttons["export_presets"] = QtWidgets.QPushButton(TEXT("export_presets", "导出预设"))
|
||||
self.buttons["export_presets"].setObjectName("exportPresetsButton")
|
||||
self.buttons["export_presets"].setIcon(ui_utils.load_icon("export"))
|
||||
self.buttons["export_presets"].setFixedHeight(28) # 设置固定高度
|
||||
|
||||
# 导入预设按钮
|
||||
self.buttons["import_presets"] = QtWidgets.QPushButton(TEXT("import_presets", "导入预设"))
|
||||
self.buttons["import_presets"].setObjectName("importPresetsButton")
|
||||
self.buttons["import_presets"].setIcon(ui_utils.load_icon("import"))
|
||||
self.buttons["import_presets"].setFixedHeight(28) # 设置固定高度
|
||||
|
||||
# 添加到滑块布局
|
||||
self.controls["presets_slider_layout"].addWidget(self.controls["presets_count_label"])
|
||||
@@ -440,14 +480,36 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
|
||||
# Presets 组布局
|
||||
presets_group_layout = QtWidgets.QVBoxLayout(self.controls["presets_group"])
|
||||
presets_group_layout.setContentsMargins(5, 5, 5, 5)
|
||||
presets_group_layout.setSpacing(5)
|
||||
presets_group_layout.setContentsMargins(5, 5, 5, 0) # 移除底部内边距
|
||||
presets_group_layout.setSpacing(0) # 移除内部间距
|
||||
|
||||
# 添加预设滚动区域
|
||||
presets_group_layout.addWidget(self.controls["presets_scroll_area"])
|
||||
|
||||
# 添加预设底部滑块布局
|
||||
presets_group_layout.addLayout(self.controls["presets_slider_layout"])
|
||||
# 添加分隔线
|
||||
self.controls["presets_separator"].setFixedHeight(1) # 减小分隔线高度
|
||||
self.controls["presets_separator"].setStyleSheet("background-color: #444444;")
|
||||
presets_group_layout.addWidget(self.controls["presets_separator"])
|
||||
|
||||
# 创建滑块容器,与上方内容无缝对接
|
||||
slider_container = QtWidgets.QWidget()
|
||||
slider_container.setObjectName("sliderContainer")
|
||||
slider_container.setFixedHeight(34) # 高度更小
|
||||
slider_container.setStyleSheet("""
|
||||
#sliderContainer {
|
||||
background-color: #222222;
|
||||
border-top: 1px solid #444444;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
""")
|
||||
slider_container_layout = QtWidgets.QVBoxLayout(slider_container)
|
||||
slider_container_layout.setContentsMargins(5, 2, 5, 2) # 上下边距更小
|
||||
slider_container_layout.setSpacing(0)
|
||||
slider_container_layout.addLayout(self.controls["presets_slider_layout"])
|
||||
|
||||
# 添加滑块容器到布局
|
||||
presets_group_layout.addWidget(slider_container)
|
||||
|
||||
# 添加Presets组到Presets面板
|
||||
presets_layout.addWidget(self.controls["presets_group"])
|
||||
@@ -560,11 +622,12 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
main_layout.addWidget(self.controls["bottom_buttons_panel"])
|
||||
|
||||
# 设置分割器初始大小
|
||||
self.splitters["main_splitter"].setSizes([400, 100, 200])
|
||||
self.splitters["main_splitter"].setSizes([800, 100, 200]) # 进一步增加顶部预设面板的高度
|
||||
|
||||
# 设置分割器的伸缩因子
|
||||
for i in range(self.splitters["main_splitter"].count()):
|
||||
self.splitters["main_splitter"].setStretchFactor(i, 1)
|
||||
# 设置分割器的伸缩因子 - 让预设面板获得更多空间
|
||||
self.splitters["main_splitter"].setStretchFactor(0, 4) # 预设面板占4份
|
||||
self.splitters["main_splitter"].setStretchFactor(1, 1) # Assets面板占1份
|
||||
self.splitters["main_splitter"].setStretchFactor(2, 1) # Descriptor面板占1份
|
||||
|
||||
# 监听预设内容区域大小变化,更新DNA网格布局
|
||||
self.controls["presets_content"].resizeEvent = lambda event: utils_rigging.on_presets_content_resize(event, self)
|
||||
|
Reference in New Issue
Block a user