This commit is contained in:
zj
2026-02-02 19:48:21 +08:00
parent a90725d178
commit ac809c08df
7 changed files with 448 additions and 540 deletions

View File

@@ -20,8 +20,9 @@ class CreatePartitionDialog(QDialog):
self.partition_table_type_combo.addItems(["gpt", "msdos"])
self.size_spinbox = QDoubleSpinBox()
self.size_spinbox.setMinimum(0.1) # 最小分区大小 0.1 GB
self.size_spinbox.setMaximum(self.max_available_mib / 1024.0) # 将 MiB 转换为 GB 显示
# 调整最小值为 0.01 GB (约 10MB),并确保最大值不小于最小值
self.size_spinbox.setMinimum(0.01)
self.size_spinbox.setMaximum(max(0.01, self.max_available_mib / 1024.0)) # 将 MiB 转换为 GB 显示
self.size_spinbox.setSuffix(" GB")
self.size_spinbox.setDecimals(2)
@@ -76,7 +77,8 @@ class CreatePartitionDialog(QDialog):
if not use_max_space and size_gb <= 0:
QMessageBox.warning(self, "输入错误", "分区大小必须大于0。")
return None
if not use_max_space and size_gb > self.max_available_mib / 1024.0:
# 这里的检查应该使用 self.size_spinbox.maximum() 来判断,因为它是实际的最大值
if not use_max_space and size_gb > self.size_spinbox.maximum():
QMessageBox.warning(self, "输入错误", "分区大小不能超过最大可用空间。")
return None
@@ -387,20 +389,21 @@ class CreateLvDialog(QDialog):
# 确保 max_size_gb 至少是 spinbox 的最小值,以防卷组可用空间过小导致 UI 问题
if max_size_gb < self.lv_size_spinbox.minimum():
self.lv_size_spinbox.setMinimum(max_size_gb) # 临时将最小值设为实际最大值
# 如果实际最大可用空间小于最小允许值,则将最小值临时调整为实际最大值
self.lv_size_spinbox.setMinimum(max_size_gb if max_size_gb > 0 else 0.01) # 至少0.01GB
else:
self.lv_size_spinbox.setMinimum(0.1) # 恢复正常最小值
self.lv_size_spinbox.setMaximum(max_size_gb) # 设置最大值
self.lv_size_spinbox.setMaximum(max(self.lv_size_spinbox.minimum(), max_size_gb)) # 设置最大值,确保不小于最小值
# 如果选中了“使用最大可用空间”,则将 spinbox 值设置为最大值
if self.use_max_space_checkbox.isChecked():
self.lv_size_spinbox.setValue(max_size_gb)
self.lv_size_spinbox.setValue(self.lv_size_spinbox.maximum())
else:
# 如果当前值超过了新的最大值,则调整为新的最大值
if self.lv_size_spinbox.value() > max_size_gb:
self.lv_size_spinbox.setValue(max_size_gb)
# 如果当前值小于新的最小值 (例如VG可用空间变为0最小值被调整为0),则调整
if self.lv_size_spinbox.value() > self.lv_size_spinbox.maximum():
self.lv_size_spinbox.setValue(self.lv_size_spinbox.maximum())
# 如果当前值小于新的最小值,则调整
elif self.lv_size_spinbox.value() < self.lv_size_spinbox.minimum():
self.lv_size_spinbox.setValue(self.lv_size_spinbox.minimum())
@@ -432,7 +435,8 @@ class CreateLvDialog(QDialog):
if not use_max_space and size_gb <= 0:
QMessageBox.warning(self, "输入错误", "逻辑卷大小必须大于0。")
return None
if not use_max_space and size_gb > self.vg_sizes.get(vg_name, 0.0):
# 这里的检查应该使用 self.lv_size_spinbox.maximum() 来判断,因为它是实际的最大值
if not use_max_space and size_gb > self.lv_size_spinbox.maximum():
QMessageBox.warning(self, "输入错误", "逻辑卷大小不能超过卷组的可用空间。")
return None
@@ -442,4 +446,3 @@ class CreateLvDialog(QDialog):
'size_gb': size_gb,
'use_max_space': use_max_space # 返回此标志
}