【Qt】QComboBox阻断currentIndexChanged信号

本文探讨了在QtCreator4.11.0环境下,使用MinGW5.3.0编译器进行C++开发时,如何在QComboBox控件初始化过程中避免触发currentIndexChanged信号。介绍了两种有效的方法:使用blockSignals函数暂时阻止信号发送,以及查阅帮助文档获取更深入的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

IDE:Qt creator 4.11.0

编译器:MinGW 5.3.0 32bit for C++

 

问题

QComboBox控件初始化时需要调用addItem、insertItem或者clear函数。这些函数本身并没有什么问题。但是,调用此类函数会触发currentIndexChanged信号。

如何在QComboBox初始化时屏蔽currentIndexChanged信号,是本文研究的问题。

 

解决方法

1、使用blockSignals函数关闭信号发生,初始化完毕后再恢复。

ui->comboBoxComPort->blockSignals(true);

//控件初始化代码

ui->comboBoxComPort->blockSignals(false);

 

2、帮助文档。

bool QObject::blockSignals(bool block)
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). If block is false, no such blocking will occur.
The return value is the previous value of signalsBlocked().
Note that the destroyed() signal will be emitted even if the signals for this object have been blocked.
Signals emitted while being blocked are not buffered.
See also signalsBlocked() and QSignalBlocker.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值