概述
在使用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后,出现信号多次响应问题的记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复