实现 Qt 统一风格与换肤实例
创始人
2024-08-02 00:10:36
0

实现 Qt 统一风格与换肤实例是本文介绍的内容,不多说,进图内容。QT既然作为一个成功的跨平台GUI库,当然会想到界面风格统一,本地化与换肤都做了考虑,网上有多种换肤的方法,自己也习惯于用简单的方法,总结了一下自己心得,与大家分享

一、改变与装饰界面:

通常使用设置Widget的背景,边界,子对象的图片,颜色来进行装饰QWidget,

1、改变被景图片

较常用办法是

  1. QWidget.setAutoFillBackground(true);  
  2.  QPalette palette= QWidget.Palette();  
  3.  QPixmap pic("xxx.png"); palette.setBrush(QPalette::Window, new Brush(pic));  
  4. palette.setBrush(QPalette::Base, new Brush(pic));  
  5. palette.setBrush(QPalette::Button, new Brush(pic));   
  6. QWidget.setPalette(palette);    

但不同的控件还是要区别对待,比如对待QPushButton简单用此方法就不行,还要设置为QPushButton.setFlat(true),也可以用QPushButton的setImage方法,还有对待 QTabWidget不仅要改变背景图片,还要改变Tab的图片,Tab还要区别改变被选中的Tab与没被选中的Tab图片,QTreeWidget,QTreeView中还要针对树装结节的图片,还有标题栏等,都要用不同的方法来设置,QT有一种更方便的解决方案,就是设置StyleSheet被称为QSS方法,类似网页设计中的CSS, 语法也几乎相同Idential,比如要设置QPushButton的背景图,鼠标over,及按下的图片切换,可以用如下方法:

  1. const char* normal   = “bg.png";  
  2. const char* pressed  =  "pressed.png;  
  3. const char* over     =    "over.png";  
  4. char str[512] = {0};  
  5. sprintf(str,"QPushButton{background-image:url(%s);border-style.:flat;} QPushButton:hover:pressed{background-image:url(%s);border-   
  6.                  style.:flat;}QPushButton:hover:!pressed{background-image:url(%s);border-style.:flat;}",  normal, pressed, over);  
  7. w->setStyleSheet(QString(str)); 

2、改变颜色:
  
常用:QWidget->setBackgroundColor();来改变,当然也可以用Style. Sheet方法。
   
二、全局统一风格:

上面提到了QSS,QT还可以通过设置QApplication的StyleSheet来改变程序中所有控件的风格。比如:

QApplication.setStyleSheet(QString("QPushButton{background-image:url(bg.png); border-style.:flat;}")); 这样的话,所有QPushButton的实例对象的背景图片缺省情况下都是bg.png,当然,如果你重新设置某个QPushButton实例对象的 StyleSheet,那个实例对象的风格以当前设置的为准。

这样对界面的风格统一提供了一个简单有效的解决方案。

三、简单介绍QSS:

google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);

小结:实现 Qt 统一风格与换肤的内容实例的内容介绍完了,希望本文对你有所帮助!

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...