Qt 您所在的位置:网站首页 爱普生1129按钮没反应 Qt

Qt

2023-11-13 08:30| 来源: 网络整理| 查看: 265

【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属性,也可以触发clicked事件,但是clicked事件的bool值要有改变,有两种方式:         一:勾选视图的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按钮按下并没有触发该事件)。

延伸:

控制触发clicked(),由按钮的setChecked(bool)来主导,默认是为true;bool为false则无法触发clicked(),为true则正常触发clicked()。

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有