如何在不点击它的情况下初始化QComboBox的默认值?

5

如何在不点击QComboBox的情况下初始化默认值?我尝试了以下代码:

ui->combBox->setCurrentIndex(1);

但是当我首次读取值时,不幸的是我得到了-1,只有在QComboBox被点击后它的值才变成了1


1
当您尝试将索引设置为1时,组合框中是否至少有2个项目? - tmpearce
2个回答

5

您确定QComboBox中至少有两个值吗?计数从0开始,而不是1。如果您想选择第一个值,需要执行以下操作:

ui->combBox->setCurrentIndex(0);

如果这不是问题所在,而且您确实在组合框中有两个值,请确保ui已经被设置。需要先执行以下调用:

ui->setupUi(this);

这是实际填充组合框的内容,使用在.ui文件中指定的值。


是的,我确定。值:true(1)和false(0)在MainWindow.ui文件中被定义。然后在构造函数中,我尝试设置值ui->combBox->setCurrentIndex(1); - Viktor Tarasov
我可以将MainWindow中的值设置为true(1)或false(0),它能够正确工作,但是如果在点击之前读取QComboBox的值,我会得到一个-1 :(( - Viktor Tarasov
你是不是在UI设置之前尝试选择索引1?也就是在构造函数中的ui->setupUi(this);调用之前? - Nikos C.
但是我刚刚看了一下,这不是问题所在:首先我调用了 ui->setupUi(this); 然后是 ui->combBox->setCurrentIndex(0); :(( 这样是正确的。 - Viktor Tarasov
请确保您不会在以后再次调用 ui->setupUi(this)。当您创建 .ui 和 .cpp 文件时,Qt 会自动编写该调用。您还可以在问题中发布构造函数的代码,以便我们进行验证。 - Nikos C.
显示剩余2条评论

1

我解决了这个问题。在connect(ui->combBox,SIGNAL(currentIndexChanged(int))之前,ui->combBox->setCurrentIndex(1);在构造函数中....@Nikos C.非常感谢您的好建议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接