下拉列表框事件绑定

下拉列表框事件绑定(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 = new QComboBox(this);


1. 选中项变化(最常用)

connect(combo, &QComboBox::currentIndexChanged, this , \[\](int index){
qDebug() << "当前选择索引:" << index;
});


2. 当前文本变化

connect(combo, &QComboBox::currentTextChanged, this , \[\](const QString& text){
qDebug() << "当前选择文本:" << text;
});


3. 用户主动选择时触发(activated)

区别:

currentIndexChanged 在代码调用 setCurrentIndex() 也会触发

activated 只有用户操作才触发

connect(combo, &QComboBox::activated, this , \[\](int index){
qDebug() << "用户主动选择了索引:" << index;
});


4. 获取选中项的文本

connect(combo, &QComboBox::currentIndexChanged, this , =(int index){
QString text = combo->currentText();
qDebug() << "选中文本:" << text;
});


5. 可编辑模式:输入内容监控

combo->setEditable(true);

connect(combo, &QComboBox::editTextChanged, this , \[\](const QString& text){
qDebug() << "输入框文字变化:" << text;
});


6. 鼠标停在某项上(highlighted)

connect(combo, &QComboBox::highlighted, this , \[\](int index){
qDebug() << "鼠标指向索引:" << index;
});

我们使用activated信号来绑定事件

首先声明并定义槽函数

void onComboBoxActivated (int index);

void MyFirstQt6::onComboBoxActivated(int index)
{
QString itemText = comboBox->itemText(index);
QMessageBox::information(this, "信息", "你选择的选项是: " + itemText);
}

然后绑定事件

connect(comboBox, &QComboBox::activated, this, &MyFirstQt6::onComboBoxActivated);

绑定后当你切换选项就会显示弹窗

相关推荐
“AI国潮设计-小江”8 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
程序喵大人9 小时前
【C++入门】编译链接模型 - 01 一个 C++ 程序是怎样变成可执行文件的
开发语言·c++·编译链接模型
sunshine22 girl10 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
菜鸟~noob23311 小时前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
惊讶的猫12 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
cmpxr_12 小时前
【MicroPython】如何刷新ESP8266的固件
开发语言·micropython
搭贝12 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
智感子12 小时前
智能称重·数据上云:从仪表读数到可追溯的计量凭证
开发语言·php
\光辉岁月/13 小时前
7.javase-面向对象
java·开发语言
weixin_5310946913 小时前
heap_4内存管理
java·开发语言·算法