您实际上需要按以下方式编写它:
QComboBox* combo = new QComboBox();
combo->addItem("True", "True");
combo->addItem("False", "False");
combo->setCurrentIndex(combo->findData("False"));
您的实现中的问题是您没有设置项目的userData,而只是设置了文本。同时,您尝试通过其为空的userData查找项目。对于给定的实现,我只使用QComboBox::addItem(const QString &text, const QVariant &userData = QVariant()))
设置项目的userData ( QVariant
) 的函数的第二个参数。
更新:
查找组合框项的另一种方法是将特定角色设置为QComboBox::findData()
函数的第二个参数。如果您不想显式设置用户数据,可以参考带有Qt::DisplayRole
标志的项目文本,即:
QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findData("False", Qt::DisplayRole)); // <- refers to the item text
更新 2:
另一种选择是使用基于文本的查找功能QComboBox::findText()
:
QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findText("False"));