pyqt6 QTableWidget 的SpinBox代理大小不对
时间: 2024-11-25 15:20:26 浏览: 15
在PyQt6中,如果你遇到`QTableWidget`的`QDoubleSpinBox`代理大小不匹配的情况,可能是由于设置的`cellWidth()`或`cellHeight()`与实际单元格内容大小不符,或者`QDoubleSpinBox`本身的初始尺寸设置了错误的范围。
以下是一些可能的解决方案:
1. 设置单元格宽度和高度:
```python
from PyQt6.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QDoubleSpinBox
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.table = QTableWidget()
self.set_table_dimensions()
def set_table_dimensions(self):
self.table.cellWidthChanged.connect(self.update_cell_width)
self.table.cellHeightChanged.connect(self.update_cell_height)
# 假设你有特定的宽度和高度计算逻辑
cell_width = self.calculate_cell_width()
cell_height = self.calculate_cell_height()
self.table.setItemDelegateForColumn(0, QDoubleSpinBox())
self.table.setColumnWidth(0, cell_width)
self.table.setRowHeight(0, cell_height)
# 更新方法可以根据具体需求实现
def calculate_cell_width(self):
# ...计算所需的宽度...
return width_value
def calculate_cell_height(self):
# ...计算所需的高度...
return height_value
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
```
2. 调整`QDoubleSpinBox`的初始大小:
```python
spin_box = QDoubleSpinBox(parent=self.table)
spin_box.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
```
如果以上操作无效,你可能需要检查`QDoubleSpinBox`的显示模式(如小数点后的位数)以及它是否适应于你添加到表格中的数值范围。
阅读全文