zoukankan      html  css  js  c++  java
  • QT 简单的风格统一与换肤

    QT既然作为一个成功的跨平台GUI库,当然会想到界面风格统一,本地化与换肤都做了考虑,网上有多种换肤的方法,自己也习惯于用简单的方法,总结了一下自己心得,与大家分享
    一,改变与装饰界面:
        通常使用设置Widget的背景,边界,子对象的图片,颜色来进行装饰QWidget,
        1,改变被景图片:
        较常用办法是 QWidget.setAutoFillBackground(true); QPalette palette= QWidget.Palette(); QPixmap pic("xxx.png"); palette.setBrush(QPalette::Window, new Brush(pic));palette.setBrush(QPalette::Base, new Brush(pic));palette.setBrush(QPalette::Button, new Brush(pic)); QWidget.setPalette(palette);  
     但不同的控件还是要区别对待,比如对待QPushButton简单用此方法就不行,还要设置为QPushButton.setFlat(true),也可以用QPushButton的setImage方法,还有对待QTabWidget不仅要改变背景图片,还要改变Tab的图片,Tab还要区别改变被选中的Tab与没被选中的Tab图片,QTreeWidget,QTreeView中还要针对树装结节的图片,还有标题栏等,都要用不同的方法来设置,QT有一种更方便的解决方案,就是设置StyleSheet
    被称为QSS方法,类似网页设计中的CSS, 语法也几乎相同Idential,比如要设置QPushButton的背景图,鼠标over,及按下的图片切换,可以用如下方法:
     const char* normal   = “bg.png";
     const char* pressed  =  "pressed.png;
     const char* over     =    "over.png";
     char str[512] = {0};
     sprintf(str,"QPushButton{background-image:url(%s);border-style:flat;} QPushButton:hover:pressed{background-image:url(%s);border- 
                      style:flat;}QPushButton:hover:!pressed{background-image:url(%s);border-style:flat;}",  normal, pressed, over);
     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:
  • 相关阅读:
    Sonar系列:IDEA集成SonarLint(二)
    Jenkins 安装部署全过程
    使用Docker搭建Sonarqube
    Sonar系列:SonarQube+SonarScanner 最全安装步骤(一)
    微信小程序反编译解包教程
    一张图告诉你,如何攻击Java Web应用
    windows server2019共享文件配额报错The quota limit is 10240.00 MB and the current usage is 10213.39 MB (99% of limit)的处理
    jenkins使用ssh remote插件执行shell后无法退出的问题处理
    基于docker镜像centos:7 镜像制作自定义的centos及tomcat/php/nginx镜像
    centos7.9环境基于docker和pipeline构建jenkins的ci平台
  • 原文地址:https://www.cnblogs.com/windwithlife/p/1552527.html
Copyright © 2011-2022 走看看