editTextChanged和currentIndexChanged之间的QComboBox关系

时间:2018-03-04 08:39:37

标签: c++ qt qcombobox

信号currentIndexChanged的使用很明显,当选择了与组合框不同的项目时会触发它。但是我遇到了另一个信号的问题。当用户覆盖组合框的editTextChanged手动更改时,会触发editText,但是当选择了组合框中的其他项时,editTextChangedcurrentIndexChanged都会被触发

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

我在QComboBox课程中找不到可以解决它的任何内容。那么问题是如何区分是否由于索引被更改或用户覆盖了editText而触发了editTextChanged?

1 个答案:

答案 0 :(得分:0)

可修改的QComboBox将有一个 关联的 默认linedit设置对象,它也可以直接与信号接口,例如:{{1 }},因此您可以选择使用textEdited信号的替代方法,&QComboBox::editTextChanged} textEdited信号,例如:

linedit

因此,在这种情况下,当您在组合框中选择一个项目时,您将只获得QComboBox信号connect(ui->comboBox->lineEdit(), &QLineEdit::textEdited, this, &MainWindow::textEdited); ,而不是currentTextChanged,这是区分您的情况。