gpt4 book ai didi

qt - 设置QComboBox的选定项目

转载 作者:行者123 更新时间:2023-12-03 15:17:32 27 4
gpt4 key购买 nike

我有一个简单的QComboBox小部件,其中有2个值:TrueFalse
我有一个QString变量currValue,这是这些值之一。我想用currValue设置小部件的当前值。

我认为解决方案如下:
首先让我们初始化currValue;
QString currValue = "False";

QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findData(currValue));


但这是行不通的。
难道我做错了什么 ?
为什么QComboBox没有这样的成员setCurrentItem()或smth?

最佳答案

实际上,您需要按照以下方式编写它:

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"));

关于qt - 设置QComboBox的选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com