如何让QComboBox的下拉列表宽度自适应内容的宽度
时间: 2023-06-15 15:03:23 浏览: 277
可以使用 `QComboBox.view().sizeHintForColumn(column)` 方法来获取下拉列表中第 `column` 列的内容宽度,然后根据宽度调整下拉列表的宽度。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QComboBox, QListView
app = QApplication([])
combo = QComboBox()
combo.setView(QListView()) # 将下拉列表设置为 QListView,方便设置宽度
# 添加下拉列表项
combo.addItem("Item 1")
combo.addItem("A very long item 2")
combo.addItem("Item 3")
combo.addItem("A very very long item 4")
# 计算下拉列表需要的宽度
view = combo.view()
max_width = 0
for i in range(combo.count()):
text = combo.itemText(i)
width = view.sizeHintForColumn(0) # 获取第 0 列的宽度
max_width = max(max_width, width)
# 设置下拉列表的宽度
combo.view().setFixedWidth(max_width + 20) # 增加 20px 的空白边距
combo.show()
app.exec_()
```
上述代码中,我们将下拉列表的视图设置为 `QListView`,这样方便我们计算下拉列表的宽度。然后通过 `sizeHintForColumn` 方法获取第 0 列的宽度,并找到最大的宽度,最后将下拉列表的宽度设置为最大宽度加上一些空白边距。
阅读全文