在QComboBox中显示项目,但不在其弹出列表中显示

在QComboBox中显示项目,但不在其弹出列表中显示

我有一些代码可以使用组合框显示产品列表。我想在组合框中显示“选择产品”:

products = ["Select product","223","51443","7335"]

但是我不希望用户能够选择“选择产品”项。我只希望用户知道此组合框用于选择产品,并且不希望使用QLabel进行标识。

page.comboBox.addItems(products)
page.comboBox.setPlaceHolderText("Please select")
page.comboBox.setGeometry(150,30,105,40)
baobeisl521 回答:在QComboBox中显示项目,但不在其弹出列表中显示

可以像这样隐藏弹出列表中的项目:

self.combo.view().setRowHidden(0,True)

但是,这仍然允许使用键盘或鼠标滚轮选择隐藏的项目。为防止这种情况,可以在连接到activated信号的插槽中禁用隐藏的项目。这意味着一旦做出有效选择,该消息将不再显示。要取回它(例如,重置表单时),只需重新启用该项目即可。

这是一个实现所有内容的基本演示:

enter image description here

import sys
from PyQt5 import QtCore,QtWidgets

class Window(QtWidgets.QWidget):
    def __init__(self):
        super(Window,self).__init__()
        self.button = QtWidgets.QPushButton('Reset')
        self.button.clicked.connect(self.handleReset)
        self.combo = QtWidgets.QComboBox()
        layout = QtWidgets.QHBoxLayout(self)
        layout.addWidget(self.combo)
        layout.addWidget(self.button)
        products = ['Select product','223','51443','7335']
        self.combo.addItems(products)
        self.combo.view().setRowHidden(0,True)
        self.combo.activated.connect(self.showComboMessage)

    def showComboMessage(self,index=-1,enable=False):
        if index:
            self.combo.model().item(0).setEnabled(enable)

    def handleReset(self):
        self.showComboMessage(enable=True)
        self.combo.setCurrentIndex(0)

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.setWindowTitle('Combo Demo')
    window.setGeometry(600,100,75)
    window.show()
    sys.exit(app.exec_())
,

尝试使用:

page.comboBox.setMinimumContentsLength(30) 
本文链接:https://www.f2er.com/3153841.html

大家都在问