實際上,你需要把它寫在下面的方法:
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
我明白了。但在這種情況下,我認爲如果我只有文本而且不需要數據,我不得不在添加新項目時設置數據。我認爲必須有更簡單的方法來設置選定的文本。 –