QCombox内容居中,控制下拉箭头是否显示
时间: 2023-10-02 21:12:09 浏览: 82
可以通过设置 QComboBox 的样式来实现内容居中和控制下拉箭头的显示。以下是一个例子:
```python
from PyQt5.QtWidgets import QApplication, QComboBox, QStyle
from PyQt5.QtGui import QFont
app = QApplication([])
combo_box = QComboBox()
combo_box.addItems(["Option 1", "Option 2", "Option 3"])
combo_box.setFont(QFont("Arial", 12))
combo_box.setStyleSheet("QComboBox { padding-left: 4px; padding-right: 20px; }"
"QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: right; width: 20px; }")
combo_box.setSizeAdjustPolicy(QComboBox.AdjustToContents)
# 居中显示
combo_box.setEditable(True)
combo_box.lineEdit().setAlignment(Qt.AlignCenter)
combo_box.setCurrentIndex(-1)
combo_box.setEditable(False)
# 控制下拉箭头的显示
if not combo_box.view().style().styleHint(QStyle.SH_ComboBox_Popup, None, combo_box.view()):
combo_box.setDuplicatesEnabled(False)
combo_box.view().setStyleSheet(combo_box.view().styleSheet() + " QAbstractItemView::item { height: 20px; }")
combo_box.view().setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
combo_box.view().setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
combo_box.view().setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
combo_box.show()
app.exec_()
```
在上述代码中,我们首先创建了一个 QComboBox 对象,并设置了其字体和样式。接着,我们使用 `setEditable()` 方法使其可编辑,并设置其内容居中的对齐方式。然后,我们使用 `setDuplicatesEnabled()` 方法控制下拉箭头的显示。最后,我们调用 `show()` 方法显示 QComboBox。
需要注意的是,由于不同平台下的样式可能不同,因此上述代码可能需要根据实际情况进行调整。
阅读全文