Qt按钮为什么设置了三态点击样式效果,无法得到预期,enabled属性为何无法选中 - C/C++解惑之Qt

来源:互联网 发布:人脸变老软件电脑版 编辑:程序博客网 时间:2024/04/30 08:30

QT版本: 4.8.5 

全套QT下载地址  含安装手册 访问密码 aaf6


如何设置三态效果

关于QT的三态效果,网上资料还是很多的,我就不贴代码了。
利用setStyleSheet用html语言给按钮添加三态属性

范例代码;
ui->按钮对象名->setStyleSheet("QPushButton{border-image: url(:/new/icons/icons/play.png);}"                                  "QPushButton:hover{border-image: url(:/new/icons/icons/play-hover.png);}"                                  "QPushButton:pressed{border-image: url(:/new/icons/icons/play-pressed.png);}");



影响按钮三态点击效果的原因


我们接下来谈谈如何造成非预期效果的其中一种情况。


原来enabled属性是罪魁祸首:

enabled属性介绍:

这个属性,大意上理解就是,选中时,是常规按钮。若未选中,则禁用该按钮不与用户做交互。
根据上面的简述,我们不难看出,如果enabled属性未选中,禁用按钮就是影响三态点击效果的罪魁

enabled属性如何设置:

UI设计师模式 - 傻瓜式设置:

选中你想要设置的按钮 --- >   属性  --- >  QWidget  --- >   enabled 属性
注意:若点击想要设置的按钮,未看到属性操作界面,请点击菜单栏内的  控件(先按Alt再按W)   --- >   视图(W)  --- >  重置为默认布局

代码命令模式 - 程序员式:

ui->按钮对象名->setEnabled(true);


为什么代码设置enabled还是无法得到预期的三态效果

为什么enabled设计师模式里无法设置

怎么办

这个问题,大家可以看看,该按钮的父类,即其所属的窗口,是否未选中enabled属性。 未选中,则将其选中。
查看窗口属性方式与查看普通按钮属性方式相似,点击窗口的空白处(即无控件的地方)即可查看设置属性

为什么

因为按钮是继承窗口的公有属性的,所以窗口enabled属性如果禁用了,其所属子类也会强行继承这一特点。
换个角度来说,如果作者想让整个窗口都禁用交互,从正常逻辑的角度,其窗口内所存放的按钮也应该都禁用,这才更符合作者的预期。


未尽事宜:

我只是把自己遇到的一些小问题总结一下,跟大家分享,如若有错的地方,勿喷,希望大家多多提醒,我会改正。

------------------------------------------------------------------------------------------------------------------------------------------
QT setStyleSheet 利用宏快速设置按钮的三态点击效果


2 0