[Qt]使用到 disconnect 的地方

前言

场景: 有一个combobox,里面可能有很多项,测试一看用得不爽啊,要是正好是选择最后一个那我岂不是要操作半天,提出要求要做成有输入自动补全的类似浏览器的这种功能

输入对应的字符然后有一个过滤的下拉列表然后选择想要的项。程序员一听心想我去Qt的combobox支持这个功能吗?不支持是不是还得自定义,怀着忐忑的心情bing一下。有对应的接口 setCompleter。好了几分钟搞定

cpp 复制代码
QStringList strings;
QComboBox *comboBox = new QComboBox();
strings << "Biao" << "Biao Huang" << "Mac" << "MacBook" << "MacBook Pro" << "Mac Pro"; 
comboBox->addItems(strings);  
comboBox->setEditable(true);  
completer = new QCompleter(strings, this);
ui->comboBox->setCompleter(completer);//绑定completer到combobox

bug

测试一测嗯功能实现了,后来用着发现不对啊,要是我随便输入几个字符,然后点击enter键,这样当前的选择项就是我当前的字符,就相当于凭空造出了一个数据,这样就会导致更多问题,这至少是一级bug,提。当comboBox设置可以编辑后,随便输入字符点击确定后comboBox会增加一项。明显是comboBoxlineEdit的信号连接上了comboBox的某一个槽函数。我们只要断开这个链接然后携手直接的槽函数,如果输入的字符不是comboBox的项点击确认后就直接替换为第一项。
setLineEdit

cpp 复制代码
disconnect(combobox->lineEdit(), &QLineEdit::returnPressed, nullptr, nullptr);
connect(combobox->lineEdit(), &QLineEdit::returnPressed, this, [](){});

disconnect 还有很多重载,支持很多用法,详见Qt帮助手册 disconnect关键词

相关推荐
神仙别闹18 小时前
基于QT(C++)实现的翻金币游戏
c++·qt·游戏
月上林梢19 小时前
QT圆形加载进度条
数据库·c++·qt·进度条
A0_張張19 小时前
记录一个PDF盖章工具(PyQt5 + PyMuPDF)
开发语言·python·qt·pdf
淼淼76320 小时前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式
钱彬 (Qian Bin)20 小时前
项目实践11—全球证件智能识别系统(切换为PostgreSQL数据库)
人工智能·qt·fastapi
深蓝海拓21 小时前
PySide6从0开始学习的笔记(二) 控件(Widget)之容器类控件
笔记·qt·学习·pyqt
_OP_CHEN1 天前
【从零开始的Qt开发指南】(十一)Qt常用控件之多元素控件与容器类控件深度解析
开发语言·qt·前端开发·多元素控件·gui开发·qt常用控件·容器类控件
我送炭你添花1 天前
Pelco KBD300A 模拟器:06.用 PyQt5 实现 1:1 像素级完美复刻 Pelco KBD300A 键盘
python·qt·自动化·运维开发
大道随心1 天前
【QT】自动化设备控制界面搭建
开发语言·qt·自动化
深蓝海拓1 天前
PySide6从0开始学习的笔记(六) 控件(Widget)之按钮类
笔记·python·qt·学习·pyqt