This commit is contained in:
Jeffreytsai1004 2025-02-10 01:37:02 +08:00
parent 191f44d78e
commit 9ca94c974d
2 changed files with 53 additions and 17 deletions

View File

@ -19,8 +19,8 @@ class MetaFusion(QtWidgets.QMainWindow):
# === 设置窗口属性 === # === 设置窗口属性 ===
self.setWindowTitle(f"{config.TOOL_NAME} {config.TOOL_VERSION}") self.setWindowTitle(f"{config.TOOL_NAME} {config.TOOL_VERSION}")
# 设置初始大小和最小大小 # 设置初始大小和最小大小
self.resize(550, 700) # 初始大小 self.resize(550, 750) # 初始大小
self.setMinimumSize(550, 700) # 最小大小限制 self.setMinimumSize(550, 750) # 最小大小限制
# === 创建中心部件 === # === 创建中心部件 ===
self.central_widget = QtWidgets.QWidget() self.central_widget = QtWidgets.QWidget()

View File

@ -193,50 +193,81 @@ class MeshesTab(QtWidgets.QWidget):
buttons = QtWidgets.QWidget() buttons = QtWidgets.QWidget()
button_layout = QtWidgets.QHBoxLayout(buttons) button_layout = QtWidgets.QHBoxLayout(buttons)
button_layout.setContentsMargins(0, 8, 0, 8) button_layout.setContentsMargins(0, 8, 0, 8)
button_layout.setSpacing(8) # 统一按钮间距为8
# 创建功能按钮 # 创建功能按钮
load_btn = self._create_tool_button("自动加载模型", "load_meshes.png", "fileOpen.png") load_btn = self._create_tool_button("自动加载模型", "load_meshes.png", "fileOpen.png")
standardize_btn = self._create_tool_button("标准化命名", "standardized_naming.png", "setEdNormalize.png") standardize_btn = self._create_tool_button("标准化命名", "standardized_naming.png", "setEdNormalize.png")
group_btn = self._create_tool_button("自动分组", "auto_group.png", "menuIconEdit.png") group_btn = self._create_tool_button("自动分组", "automatic_groupingg.png", "menuIconEdit.png")
delete_btn = self._create_tool_button("清理", "delete.png", "delete.png") delete_btn = self._create_tool_button("清理", "delete.png", "delete.png")
# 设置按钮固定宽度 # 创建按钮容器
button_width = (widget.width() - 32) // 4 # 32是左右边距和3个按钮间距(8*3)的总和 button_container = QtWidgets.QWidget()
container_layout = QtWidgets.QHBoxLayout(button_container)
container_layout.setContentsMargins(0, 0, 0, 0)
container_layout.setSpacing(4) # 减小按钮间距为4
# 添加按钮到容器,使用弹性空间使按钮居中
container_layout.addStretch(1)
for btn in [load_btn, standardize_btn, group_btn, delete_btn]: for btn in [load_btn, standardize_btn, group_btn, delete_btn]:
btn.setFixedWidth(button_width) container_layout.addWidget(btn)
button_layout.addWidget(btn) if btn != delete_btn: # 最后一个按钮后不添加间距
container_layout.addSpacing(4) # 添加固定间距
container_layout.addStretch(1)
button_layout.addWidget(button_container)
# === 添加到主布局 === # === 添加到主布局 ===
layout.addWidget(scroll) layout.addWidget(scroll)
layout.addWidget(buttons) layout.addWidget(buttons)
# 添加窗口大小变化事件处理
def on_resize(event):
width = event.size().width()
available_width = width - 28 # 28是左右边距(16)和按钮间距(4*3)的总和
button_width = (available_width) // 4
for btn in [load_btn, standardize_btn, group_btn, delete_btn]:
btn.setFixedWidth(button_width)
super(type(widget), widget).resizeEvent(event)
widget.resizeEvent = on_resize
return widget return widget
def _create_mesh_item(self, mesh_name): def _create_mesh_item(self, mesh_name):
"""创建网格项""" """创建网格项"""
item = QtWidgets.QWidget() item = QtWidgets.QWidget()
layout = QtWidgets.QHBoxLayout(item) layout = QtWidgets.QHBoxLayout(item)
layout.setContentsMargins(4, 2, 4, 2) # 减小上下边距 layout.setContentsMargins(4, 1, 4, 1) # 减小上下边距
layout.setSpacing(8) layout.setSpacing(4) # 减小间距
# 左侧容器(标签和输入框)
left_container = QtWidgets.QWidget()
left_layout = QtWidgets.QHBoxLayout(left_container)
left_layout.setContentsMargins(0, 0, 0, 0)
left_layout.setSpacing(4) # 减小标签和输入框的间距
# 网格名称标签 # 网格名称标签
name_label = QtWidgets.QLabel(mesh_name) name_label = QtWidgets.QLabel(mesh_name)
name_label.setMinimumWidth(100) name_label.setFixedWidth(70) # 减小标签宽度
name_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) # 左对齐
# 网格路径输入框 - 可编辑 # 网格路径输入框 - 可编辑
path_edit = QtWidgets.QLineEdit() path_edit = QtWidgets.QLineEdit()
path_edit.setPlaceholderText("输入或选择模型路径...") path_edit.setPlaceholderText("输入或选择模型路径...")
path_edit.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
# 添加按钮 left_layout.addWidget(name_label)
left_layout.addWidget(path_edit)
# 添加按钮(右对齐)
add_btn = QtWidgets.QPushButton() add_btn = QtWidgets.QPushButton()
add_btn.setIcon(QtGui.QIcon(":fileOpen.png")) add_btn.setIcon(QtGui.QIcon(":fileOpen.png"))
add_btn.setToolTip("浏览...") add_btn.setToolTip("浏览...")
add_btn.setFixedSize(24, 24) # 减小按钮大小 add_btn.setFixedSize(22, 22)
layout.addWidget(name_label) # 添加到主布局
layout.addWidget(path_edit) layout.addWidget(left_container, stretch=1) # 左侧容器占据所有可用空间
layout.addWidget(add_btn) layout.addWidget(add_btn) # 按钮右对齐
# 设置样式 # 设置样式
item.setStyleSheet(""" item.setStyleSheet("""
@ -251,8 +282,9 @@ class MeshesTab(QtWidgets.QWidget):
background: #3D3D3D; background: #3D3D3D;
border: 1px solid #555555; border: 1px solid #555555;
border-radius: 2px; border-radius: 2px;
padding: 4px 8px; padding: 2px 4px;
color: #CCCCCC; color: #CCCCCC;
min-height: 22px;
} }
QLineEdit:hover { QLineEdit:hover {
border: 1px solid #666666; border: 1px solid #666666;
@ -265,6 +297,7 @@ class MeshesTab(QtWidgets.QWidget):
background: #3D3D3D; background: #3D3D3D;
border: 1px solid #555555; border: 1px solid #555555;
border-radius: 2px; border-radius: 2px;
padding: 2px;
} }
QPushButton:hover { QPushButton:hover {
background: #454545; background: #454545;
@ -274,6 +307,9 @@ class MeshesTab(QtWidgets.QWidget):
} }
""") """)
# 设置大小策略
item.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
return item return item
def _create_tool_button(self, text, icon_name, fallback_icon=None): def _create_tool_button(self, text, icon_name, fallback_icon=None):