是否可以先创建组合框的项目,然后设置其显示属性(例如背景颜色、图标、字体颜色、字体大小等),最后使用QComboBox.addItem()
方法将其添加到组合框中?目前我只能使用以下方法:
myCombobox = QtGui.QComboBox
for i in range(10):
myCombobox.addItem(str(i))
毋庸置疑,这种方法留下了很少的空间来定制每个组合框项目的显示属性。我想要的是像这样的东西:
myCombobox = QtGui.QComboBox
for i in range(10):
item = comboboxItem()
item.setColor(allBlueAndShiny)
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
# Only after item was set with all display properties it is added:
myCombobox.addItem(str(i))
这里有一个QCombobox自定义项目的可工作示例。感谢ekhumoro!
from PyQt4 import QtGui, QtCore
def main():
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
main_layout = QtGui.QVBoxLayout()
# QComboBox
combo = QtGui.QComboBox()
model = combo.model()
for row in range(10):
item = QtGui.QStandardItem(str(row))
item.setForeground(QtGui.QColor('red'))
font = item.font()
font.setPointSize(10)
item.setFont(font)
model.appendRow(item)
main_layout.addWidget(combo)
ok_button = QtGui.QPushButton("OK")
ok_button.clicked.connect(OK)
main_layout.addWidget(ok_button)
main_layout.addStretch(1)
window.setLayout(main_layout)
window.show()
sys.exit(app.exec_())
def OK(self):
print 'OK'
if __name__ == '__main__':
main()
QComboBox
已经使用了QStandardItemModel
,所以我相应地简化了我的示例。 - ekhumoro