实际上,你需要把它写在下面的方法:
QComboBox* combo = new QComboBox();
combo->addItem("True", "True");
combo->addItem("False", "False");
combo->setCurrentIndex(combo->findData("False"));
在你实现的问题是,你没有设置项目用户数据,但只有文字。在同一时间,您尝试通过其用户数据找到空的项目。 使用给定的实现,我只使用QComboBox::addItem(const QString &text, const QVariant &userData = QVariant()))
函数的第二个参数来设置项目的userData(QVariant
)。
UPDATE:
替代的方式找到组合框项设置为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"));
为什么?! 2个相等参数的含义是什么? –
@KarenTsirunyan,我已经更新了我的答案和更多细节。 – vahancho
我明白了。但在这种情况下,我认为如果我只有文本而且不需要数据,我不得不在添加新项目时设置数据。我认为必须有更简单的方法来设置选定的文本。 –