当前位置: 首页 > >

Qt??【若按钮点击后无反应,可以勾选或设置Checkable属性】UI界面的QPushButton的树视图中勾选Checkable属性(clicked和toggled事件比较)

发布时间:

【Qt5.8+Windows+QtCreator】


注意:写好了按钮的信号与槽机制代码,当你点击QPushButton按钮时,发现按钮没有反应(Click或toggle触发事件),就可以勾选“树视图的Checkable属性? 或者? 在构造函数里,给对应控件setCheckable(true)”。?


?


我在UI界面有六个控件,都做了这样的操作“按下”按钮可变按钮文本(PS:Checkable是设置按钮"能否选中",不是"是否已选中"!!!)



Open:触发clicked事件,在UI视图中未勾选Checkable属性


HighSpeed:触发clicked事件,在UI视图中未勾选Checkable属性,但是在槽函数中:ui->btHigh->setCheckable(true);


CBI:触发clicked事件,在UI视图中勾选Checkable属性


TurnOn:触发toggled事件,在UI视图中未勾选Checkable属性


Auto:触发toggled事件,在UI视图中未勾选Checkable属性,但是在槽函数中:ui->btAuto->setCheckable(true);


Light+:触发toggled事件,在UI视图中勾选Checkable属性




测试:



Open:按钮被按下,发现按钮会跟着鼠标动作变色:按下从灰色变淡蓝色,放开从淡蓝色渐变回灰色;按钮文本没有改变;按钮无论按多少下,bool值是false。


HighSpeed:按钮被按一次,发现按钮变淡蓝色,bool值是true;再按一次,按钮变回灰色,bool值是false;按的两次,按钮文本都改变了。


CBI:按钮被按一次,发现按钮变淡蓝色,bool值是true;再按一次,按钮变回灰色,bool值是false;按的两次,按钮文本都改变了。


TurnOn:按钮被按下,发现按钮会跟着鼠标动作变色:按下从灰色变淡蓝色,放开从淡蓝色渐变回灰色;按钮文本没有改变;按钮无论按多少下,都无法触发clicked事件,所以不知道bool值是什么。


Auto:按钮被按下,发现按钮会跟着鼠标动作变色:按下从灰色变淡蓝色,放开从淡蓝色渐变回灰色;按钮文本没有改变;按钮无论按多少下,都无法触发clicked事件,所以进入不了槽函数,设置Checkable为true,且不知道bool值是什么。


Light+:按钮被按一次,发现按钮变淡蓝色,bool值是true;再按一次,按钮变回灰色,bool值是false;按的两次,按钮文本都改变了。



总结:


在UI界面窗口的树视图或者下拉按钮视图中,找到QAbstractButton类,选中checkable属性。
? ? ? ? 一:勾选视图的checkable属性,二:添加这行代码ui->btAddLight->setCheckable(true);


没有选中checkable属性,就不可以触发toggled事件!所以这行代码ui->btAddLight->setCheckable(true);对 “连接toggled事件的槽函数”是无用的!------》触发QPushButton的toggled事件,就要选中checkable属性!


选中checkable属性,除了触发toggled事件,还可以有明显的颜色变化,按一下从灰色变淡蓝色,再按一下才从淡蓝色渐变回灰色;无论能不能触发事件,只要选中了checkable属性,就一定有这样的颜色变化!



---------------------------------------------------------------------------------------------------------------


    pressed事件最先执行,相当于按下操作按下之后,按钮状态发生变化,触发toggled事件clicked事件最后执行,相当于弹起操作

--------------------------------------------------------------------------------------------------------------


toggled要比clicked更容易触发。clicked()有的toggled有,而toggled有的,clicked()却不一定有!
toggle(切换) 类似开关。 具有2个状态,打开/关闭。使用这个信号,是在这2个状态之间切换。QPushButton类的按钮和QRadioButton类的单选框可调用。
trigger(触发)是一次性的。 点击后,无法改变状态。 要么是打开,要么是关闭。一般按钮和QAction类的按钮都可调用(QPushButton按钮按下并没有触发该事件)。


参考:?QPushButton 实现保持按下效果、QPushButton 点击信号分析、QT 信号toggled triggered区别、qt中clicked()和toggled()的区别



友情链接: