繁体   English   中英

editTextChanged 和 currentIndexChanged 之间的 QComboBox 关系

[英]QComboBox relation between editTextChanged and currentIndexChanged

Usage of the signal currentIndexChanged is clear, it's triggered when a different item from combobox is selected. 但我正面临另一个信号的问题。 editTextChanged当被触发editText组合框的由用户手动改变覆盖它,而且选自组合框另一个项目时,这样既editTextChangedcurrentIndexChanged被触发。

我的问题是我需要知道我的插槽on_comboBox_editTextChanged()发生了这两种可能性中的哪一种,无论是文本被覆盖还是选择了不同的项目。 就我看到的,slot on_comboBox_editTextChanged()是第一个调用的,所以不知道如何在slot中实现这个信息。

我在QComboBox类中没有找到任何可以解决它的东西。 那么问题来了,如何区分editTextChanged是因为索引被改变还是用户覆盖了editText而触发的?

可编辑的QComboBox将有一个关联的默认linedit集对象,它也可以直接与信号接口,例如: textEdited ,因此您可以选择使用&QComboBox::editTextChanged信号的替代方案,例如linedit对象的textEdited信号:

connect(ui->comboBox->lineEdit(), &QLineEdit::textEdited, this, &MainWindow::textEdited);

因此,在这种情况下,当您在组合框中选择一个项目时,您只会得到 QComboBox 信号currentTextChanged ,而不是textEdited ,这是您的情况的区别。

您可以在editTextChanged处理程序中询问所选项目的索引。 如果返回 -1,则文本已被编辑,否则该项目是从下拉列表中选择的。 在文本框中输入的文本但它存在于下拉列表中,与用户从下拉列表中选择项目的情况相同。

currentIndex : int

此属性保存组合框中当前项目的索引。

插入或删除项目时,当前索引可以更改。

默认情况下,对于空组合框或未设置当前项的组合框,此属性的值为 -1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM