我是靠谱客的博主 唠叨火车,最近开发中收集的这篇文章主要介绍Qt中 QSpinBox控件绑定valueChanged后,出现信号多次响应问题的记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    在使用Qt VS2019编程过 ,有一个功能需要使用QSpinBox控件。在窗体的类中,声明了:

void on_spinBox_valueChanged(int val);

    并在.cpp中实现该函数功能如下所示:

void MyFormClass::on_spinBox_valueChanged(int val)
{
    ui.spinBox->setEnabled(false);
    dataCount = ui.spinBox->value();//获取当前spinBox的值
    ui.spinBox->setEnabled(true);
}

    由于Qt设计师界面中存在信号和槽的默认绑定虚函数,此处使用on_Name_valueChanged(int val),则没有在窗口构造函数中添加connect,由编译器自动绑定。

    在没有添加setEnabled时获取value时,on_spinBox_valueChanged(int val)函数会响应两次,即鼠 标点击一次,但其中数值每次变化2,而添加上述setEnabled代码段后,valueChanged响应两次的现象暂时消失,可以逐1增加。但这样写后,鼠标如果左键点击不放,该控件数值则不能一直增加。

已经排除信号和槽绑定两次。具体的原因可能是该控件认为鼠标单击停留超过一定时间。

在Debug模式下,在下述函数中 获取数值加上断电,会重复进入两次,则数值显示每次加2。退出Debug,实际运行则数值加1,则可能是其他线程(如Debug)卡了Ui界面导致的

void MyFormClass::on_spinBox_valueChanged(int val)
{

    dataCount = ui.spinBox->value();//获取当前spinBox的值

}

下面是找到的相关资料,只作为参考。

Qt插槽调用了两次 - Thinbug

SpinBox QML Type | Qt Quick Controls 1 5.15.7

 

最后

以上就是唠叨火车为你收集整理的Qt中 QSpinBox控件绑定valueChanged后,出现信号多次响应问题的记录的全部内容,希望文章能够帮你解决Qt中 QSpinBox控件绑定valueChanged后,出现信号多次响应问题的记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部