• 7733阅读
  • 6回复

style sheet的使用方法 [复制链接]

上一主题 下一主题
离线shifan
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-24
我在作程序的时候发现一个问题,比如有如下代码:
ui->stackedWidget->setStyleSheet("QPushButton {\
             color: grey;\
             border-image: url(skins/"+userSkin+"/button_wave.jpeg) 3 10 3 10;\
             border-top: 3px transparent;\
             border-bottom: 3px transparent;\
             border-right: 10px transparent;\
             border-left: 10px transparent;}\
");
   ui->stackedWidget->setStyleSheet("QPushButton:pressed{Font Weight:bold}");
这样的话第一句就没有用了,第二句会把它替掉。
但是如果我把它们写在一起:
ui->stackedWidget->setStyleSheet("QPushButton {\
             color: grey;\
             border-image: url(skins/"+userSkin+"/button_wave.jpeg) 3 10 3 10;\
             border-top: 3px transparent;\
             border-bottom: 3px transparent;\
             border-right: 10px transparent;\
             border-left: 10px transparent;}\
            QPushButton:pressed{Font Weight:bold}");
第二句又没有效果了。
怎样才能让我写的这两句话都起作用呢?
Qt能不能真的像网页制作那样通过包含一个类似.css的文件来控制整个工程的外观呢?
离线shifan
只看该作者 1楼 发表于: 2009-12-24
setStyleSheet的内部是怎么实现的呢?感觉很奇怪,既然是解析字符串,那么没有理由只允许一个设置,而不让第二个设置生效啊?
离线dbzhang800

只看该作者 2楼 发表于: 2009-12-24
第一个方法会覆盖。第二个方法没问题,至于为什么不工作,估计只能慢慢调了

你可以写一个 qss文件内,然后在代码内或命令行指定
离线chuck_gao
只看该作者 3楼 发表于: 2009-12-24
Qt的stylesheet就是用css的方法加载设置的。你的代码不工作的原因是,你写错了。具体的看ref嘛,错误的地方
ui->stackedWidget->setStyleSheet("QPushButton {\
             color: grey;\
             border-image: url(skins/"+userSkin+"/button_wave.jpeg) 3 10 3 10;\
             border-top: 3px transparent;\
             border-bottom: 3px transparent;\
             border-right: 10px transparent;\
             border-left: 10px transparent;}\
            QPushButton:pressed{Font Weight:bold}");   //前面已经申明是在处理QPushButton类了。而且看代码的意思并不是修改
                                              //QPushButton类的style,而是某一对象的,所以要换成修改对象的方法
Create Digital Life
离线shifan
只看该作者 4楼 发表于: 2009-12-24
谢谢您,dbzhang800,十分感谢。
离线wd007

只看该作者 5楼 发表于: 2009-12-24
直观的方法还可以放到Qt Designer里面,开一个界面,放上一个按钮,用右键菜单选择改变样式表,把你的代码放进去,看看提示有无错误。不断的试试,另外,Qt Assistant中有很多的例子
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线shifan
只看该作者 6楼 发表于: 2009-12-24
引用第3楼chuck_gao于2009-12-24 21:51发表的  :
Qt的stylesheet就是用css的方法加载设置的。你的代码不工作的原因是,你写错了。具体的看ref嘛,错误的地方
ui->stackedWidget->setStyleSheet("QPushButton {
             color: grey;
             border-image: url(skins/"+userSkin+"/button_wave.jpeg) 3 10 3 10;
             border-top: 3px transparent;
.......

我就是想给全部的QPushButton设置一个外观,但是在鼠标停留上面的时候,要有一点点的改变(这里面让字大了一点)。
快速回复
限100 字节
 
上一个 下一个