[英]QComboBox Get The Varient When “currentIndexChanged(int)” Emitted
[英]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
组合框的由用户手动改变覆盖它,而且选自组合框另一个项目时,这样既editTextChanged
和currentIndexChanged
被触发。
我的问题是我需要知道我的插槽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.