下拉列表框事件绑定(QComboBox)
一、事件类型介绍
QComboBox 提供多种信号(事件),用于在用户操作控件时触发特定行为。常见事件包括:
1. currentIndexChanged(int)
当选中项的索引改变时触发。
索引从 0 开始。
2. currentTextChanged(const QString&)
当当前显示的文字发生变化时触发。
3. activated(int)
当用户“选中某项”并弹起鼠标或按键后触发。
更接近“用户主动选中”的语义。
4. textActivated(const QString&)
用户主动选中某项(按文本触发)。
5. editTextChanged(const QString&)
在 editable 模式下,当输入框文字变化时触发。
6. highlighted(int)
当用户“鼠标移动到某项上”时触发。
二、事件用途说明
信号 | 用途场景 |
currentIndexChanged | 任何选中项变化时触发,最常用 |
currentTextChanged | 文本变化时触发(对可编辑下拉框非常有用) |
activated | 用户主动点击选择时触发(不会因代码设置改变触发) |
editTextChanged | 当可编辑下拉框输入内容时触发 |
highlighted | 鼠标指到某一项时触发 |
三、事件绑定示例
所有事件都在构造函数中添加即可。
假设控件名为:
combo =newQComboBox(this);
1. 选中项变化(最常用)
connect(combo, &QComboBox::currentIndexChanged,this, [](intindex){
qDebug() <<"当前选择索引:"<< index;
});
2. 当前文本变化
connect(combo, &QComboBox::currentTextChanged,this, [](constQString& text){
qDebug() <<"当前选择文本:"<< text;
});
3. 用户主动选择时触发(activated)
区别:
currentIndexChanged 在代码调用 setCurrentIndex() 也会触发
activated只有用户操作才触发
connect(combo, &QComboBox::activated,this, [](intindex){
qDebug() <<"用户主动选择了索引:"<< index;
});
4. 获取选中项的文本
connect(combo, &QComboBox::currentIndexChanged,this, [=](intindex){
QString text = combo->currentText();
qDebug() <<"选中文本:"<< text;
});
5. 可编辑模式:输入内容监控
combo->setEditable(true);
connect(combo, &QComboBox::editTextChanged,this, [](constQString& text){
qDebug() <<"输入框文字变化:"<< text;
});
6. 鼠标停在某项上(highlighted)
connect(combo, &QComboBox::highlighted,this, [](intindex){
qDebug() <<"鼠标指向索引:"<< index;
});
我们使用activated信号来绑定事件
首先声明并定义槽函数
voidonComboBoxActivated(intindex);
voidMyFirstQt6::onComboBoxActivated(intindex)
{
QString itemText = comboBox->itemText(index);
QMessageBox::information(this,"信息","你选择的选项是: "+ itemText);
}
然后绑定事件
connect(comboBox, &QComboBox::activated,this, &MyFirstQt6::onComboBoxActivated);
绑定后当你切换选项就会显示弹窗