mysql5资源共享

 找回密码
 立即注册
查看: 1325|回复: 20

[QT] Qt qss中如何可以实现控件的样式更新?

[复制链接]

2

主题

257

帖子

580

积分

高级会员

Rank: 4

积分
580
发表于 2015-7-24 10:21:08 | 显示全部楼层 |阅读模式
各位大侠,请教一个问题,qss中如何可以实现控件的样式更新?

例如,有以下的一个应用场景:
一个QLineEdit输入框:
当焦点失去后,会对之进行校验是否符合要求,如果不符合,这个输入框颜色等样式发生变化:

qss如下:

  1. /*--------------------QLineEdit--------------------------*/
  2. QLineEdit{border:1pxsolid#ddd;        width:100%;font-size:14px;height:24px;line-height:24px;padding:4px;}
  3. QLineEdit{border:1pxsolid#bbb;}
  4. QLineEdit{border:1.3pxsolid#3bb4f2;}
  5. QLineEdit:disabled,QLineEdit:disabled:focus{background-color:#ededed;border-color:#ddd;}
  6. //////////这个是关键的地方
  7. QLineEdit:如果是错误的话{background-color:#fbe2e2;border-color:#c66161;color:#c00;}
复制代码


问题:应该如何在qss中写错误的那段标识?如何在程序中反应出这个样式?同时,当输入正确后,如何恢复正常的QLineEdit的样式?


在线等,谢谢

回复

使用道具 举报

8

主题

59

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2015-7-24 11:15:38 | 显示全部楼层
QLineEdit怎么判断你的输入是否符合,这需要你自己判断。不符合你重新设置一下lineEdit的qss就行了
回复

使用道具 举报

2

主题

257

帖子

580

积分

高级会员

Rank: 4

积分
580
 楼主| 发表于 2015-7-24 13:46:56 | 显示全部楼层
引用1楼sddsighhz的回复:谢谢您的回复。
QLineEdit怎么判断你的输入是否符合,这需要你自己判断。不符合你重新设置一下lineEdit的qss就行了
如何判断,这个我是比较容易实现的,但是怎么重置呢?我希望重置后的样式是写在qss中的

回复

使用道具 举报

6

主题

59

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2015-7-24 16:08:10 | 显示全部楼层
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
回复

使用道具 举报

8

主题

35

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2015-7-24 20:25:00 | 显示全部楼层



assistance里面有讲。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

2

主题

257

帖子

580

积分

高级会员

Rank: 4

积分
580
 楼主| 发表于 2015-7-30 22:15:25 | 显示全部楼层
引用4楼llq108的回复:


assistance里面有讲。
您好:
我看了您给的手册文档,但是我还是没有完成:
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。



回复

使用道具 举报

2

主题

257

帖子

580

积分

高级会员

Rank: 4

积分
580
 楼主| 发表于 2015-7-30 22:16:29 | 显示全部楼层
引用3楼Esonpo的回复:自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。
回复

使用道具 举报

18

主题

158

帖子

364

积分

中级会员

Rank: 3Rank: 3

积分
364
发表于 2015-7-31 10:53:48 | 显示全部楼层
可以针对ObjectName设置QSS:
lineEdit.setObjectName('normal')
------------------------
QSS文件:
QLineEdit#normal{background:..............;}
QLineEdit#error{background:................;}
-------------------------
判断为错误时,设置一下
lineEdit.setObjectName('error')

不过我没试过,你试试这样行不行……
回复

使用道具 举报

18

主题

158

帖子

364

积分

中级会员

Rank: 3Rank: 3

积分
364
发表于 2015-7-31 11:07:21 | 显示全部楼层
lineEdit.update()??
引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。


引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。


引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。


引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。


引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。


引用6楼bsbsxll的回复:Quote: 引用3楼Esonpo的回复:
自定义QSS属性,去翻翻QSS帮助文档,看怎么自定义qss的属性来控制
您好。
现在我针对样式设置了一个属性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}

如果在程序刚开始加载的时候,我设置setProperty("stated",true);,则这个控件就显示这个样的样式,
但是如果一开始QLineEdit的stated属性是false,然后我通过点击按钮后设置stated=true;则这个控件一点反应没有,
请问这个是为什么?我应该还是少一一些操作。。麻烦您了。
回复

使用道具 举报

2

主题

7

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2016-2-3 11:22:35 | 显示全部楼层
楼主解决了么求方法~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2020-1-28 11:47 , Processed in 0.052376 second(s), 19 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表