下拉列表框事件绑定

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

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

相关推荐
Quz20 小时前
QML Hello World 入门示例
qt
xcyxiner4 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner5 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner5 天前
DicomViewer (添加模型类)3
qt
xcyxiner6 天前
DicomViewer (目录调整) 2
qt
xcyxiner6 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR0067 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术7 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园7 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob8 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio