QComboBox的currentIndexChanged死循环问题

    技术2022-07-10  147

    void SysSettingImpl::onAutoStartChange() { OI_Q(SysSetting); int autoStart = _autoStart->currentIndex(); if (autoStart == 0) { _isAutoStart = false; _autoStart->setCurrentIndex(0); _autoStart->setCurrentText("false"); } else { _isAutoStart = true; _autoStart->setCurrentIndex(1); _autoStart->setCurrentText("true"); } }

    在项目中想用currentIndexChanged触发,结果上面这段代码只要触发运行程序就崩了,调试发现一直在里面死循环。

    后查资料发现,不管是手动改变combobox的index还是使用函数来设置当前的index都会发出index改变的消息,此时就需要使用关闭信号:

    void SysSettingImpl::onAutoStartChange() { OI_Q(SysSetting); int autoStart = _autoStart->currentIndex(); if (autoStart == 0) { _isAutoStart = false; _autoStart->blockSignals(true); _autoStart->setCurrentIndex(0); _autoStart->setCurrentText("false"); _autoStart->blockSignals(false); } else { _isAutoStart = true; _autoStart->blockSignals(true); _autoStart->setCurrentIndex(1); _autoStart->setCurrentText("true"); _autoStart->blockSignals(false); } }

     

    Processed: 0.012, SQL: 9