网站建设资讯

NEWS

网站建设资讯

关于qtcss界面样式表的信息

关于Qt中的qss样式表需要注意的坑

关于QSS要注意的坑。

创新互联公司服务紧随时代发展步伐,进行技术革新和技术进步,经过10多年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行做网站、成都网站设计、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

- qss源自css,相当于css的一个子集,主要支持的是css2标准,很多网上的css3的标准的写法在qss这里是不生效的,所以不要大惊小怪。

- qss也不是完全支持所有的css2,比如text-align官方文档就有说明,只支持 QPushButton and QProgressBar,务必看清楚。

- 有时候偷懒直接来一句 *{xxx},你会发现大部分是应用了,也有小部分或者极个别没有应用,你可能需要在对应的窗体中 this-setStyleSheet() 来设置。

- qss的执行是有优先级的,如果没有指定父对象,则对所有的应用,比如在窗体widget中 {color:#ff0000;} 这样会对widget以及widget的所有子对象应用该样式,这种问题各大群每周都有人问,你会发现各种奇奇怪怪的异样不正常,怎么办呢,你需要指定类名或者对象名,比如 #widget{color:#ff0000;} 这样就只会对widget对象应用该样式,另一种写法 QWidget#widget{color:#ff0000;},只想对窗体本身而不是子控件按钮标签等 .QWidget{color:#ff0000;} ,具体详细规则参见官方说明。

- qss整体来说还是可以的,解析速度性能在Qt5高版本后期比Qt4好很多,尤其是修复了不少qss中的解析绘制BUG。尽管有这样那样的BUG,怀着包容的心对待它。

- qss官方学习地址1:[]()

- qss官方学习地址2:[]()

Qt样式表有多种运行机制,主要是考虑到各种需求场景,继承自QWidget的类和qApp类都支持setStyleSheet方法,还可以统一将样式表放在文件,或者将样式文件加入到资源文件。

- 斗气:qss内容写得到处都是,哪里需要就写在哪里,各种控件调用 setStyleSheet方法传入样式表内容,或者直接对应控件鼠标右键弹出菜单选择改变样式表填入内容;

- 斗者:qss内容放在文件,读取文件内容设置样式表,程序发布的时候带上qss文件;

- 斗师:qss文件作为资源文件放到qrc文件,直接编译到可执行文件中,防止篡改;

- 斗灵:在qss文件中自定义一些标志充当变量使用,读取以后替换对应的变量为颜色值,类似动态换肤;

- 斗王:放在文件容易被篡改,集成到可执行文件不够灵活,一旦样式表更新需要重新编译文件,如何做到既能只更新样式表文件,又不需要重新编译可执行文件,又能防止被篡改:采用rcc命令将资源文件编译生成二进制,只需要替换该二进制文件即可;

- 斗皇:继承qstyle类自己实现完成所有样式接口,统一整体风格,大名鼎鼎的UOS系统默认规则就是如此,不允许用样式表,全部painter绘制;

如何用Qt做出好看的按钮界面

原理很简单,设置样式表,或直接用贴图的方式:

方法一:修改样式表

方法二:同样是修改样式表,但是用的贴图

/*正常状态*/

QPushButton#myBtn {

/*直接替换背景图片*/

border-image: url(:/images/mybtn_nomal.png);

}

/*悬停状态*/

QPushButton#myBtn:hover {

/*直接替换背景图片*/

border-image: url(:/images/mybtn_hover.png);

}

/*按下状态*/

QPushButton#myBtn:press {

/*直接替换背景图片*/

border-image: url(:/images/mybtn_press.png);

}

怎么改变Qt界面文字的颜色 字体样式

Qt改变界面文字有很多方法(下面以Label控件为例):

1.通过Qt Creater:

拖一个Label到窗体上,对着Label右键-改变多信息文本...,里面就可以修改Label的内容、颜色、字体样式等等。

2.通过代码:

QLabel *label = new QLabel("Hello World!"); //新建一个显示"Hello World"的Label

//使用setPalette()方法改变颜色

QPalette pt;

pt.setColor(QPalette::WindowText, Qt::red); //设置为红色

label-setPalette(pt);

//使用setFont()方法改变字体样式

QFont font("Microsoft YaHei", 12,75); //设置为微软雅黑,字体12号,加粗

/*常见权重(第三个参数):

QFont::Light - 25        高亮

QFont::Normal - 50    正常

QFont::DemiBold - 63  半粗体

QFont::Bold - 75        粗体

QFont::Black - 87       黑体*/

label-setFont(font);

//使用样式表改变颜色

label-setStyleSheet("color:blue;"); //设置为蓝色

//使用简单的HTML样式改变颜色和样式

QLabel *label2 = new QLabel("h2iHello/i"

"font color=redWorld!/font/h2")

参考资料:CSDN 《C++ GUI Qt 4编程》


新闻标题:关于qtcss界面样式表的信息
文章位置:http://cdweb.net/article/dsdippe.html