Chinaunix首页 | 论坛 | 博客

OS

  • 博客访问: 2224580
  • 博文数量: 691
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2660
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-05 12:49
个人简介

不浮躁

文章分类

全部博文(691)

文章存档

2019年(1)

2017年(12)

2016年(99)

2015年(207)

2014年(372)

分类: 嵌入式

2015-01-01 21:01:19

分类: 536人阅读 (0)

      由于某些原因,本人对于UI美化十分热衷,平生最大的想法就是做一个“让我的小伙伴们都惊呆了”的UI程序,跟随工作转辗折腾,始终不遂愿,后来接触了HtmLayout和Sciter疯狂了好几周,翻译N多文章,最终因为文档的原因不得不放弃了。哎呀,跑题了......

     以上都不是重点,重点是今天要解决的Qt样式表美化程序的问题,当让,如今的Qt已经步入5.2的牛叉版本,跨平台并且支持Qml界面,支持所有的手机应用开发,简直是开发神器!是优点又是缺点,它才出生就这么强大,肯定免不了这样那样的问题,相比较已经更新维护了10多年的V4.xx版本,4版本才是真正应该好好学会的核心内容。so,......

    不要理会上面的内容,都是瞎诌的。下面来讲如何定制一个可修改的程序样式表文件,即通过文件加载Qt Style sheets内容。

-----------------------------------

    在这之前,让我们先梳理一下思路:

1、Qt Style sheets是一些90%等价于CSS的文本内容。

2、Qt不提供直接加载样式文件的办法,但是对所有的Qwidget提供了setStyleSheet()函数。

3、Qt的样式表相对关系完全和CSS类似,可以在Dialog中设置自身所有子控件甚至其他Dialog中的类型Style。

    鉴于以上原因,我们可以直接写一个CSS文件,在程序启动时,主动读取,并且加载到主窗口中,然后Qt引擎会自动解析和绘制User Custom Style。

------------------------------------

下面,开始正式的处理:

准备工作:

1、新建一个Qt项目,简单起见,基于QDialog。然后再上放一些常用的控件,以便于测试和观察。

2、书写一个加载CSS文件并且设置样式的函数,以便于测试,以后每次都可以不用重新编译。(当然,Qt支持直接书写style到xx.ui文件,需要重新编译)


原始界面:


加载函数:(默认加载exe所在目录default.css文件)

[cpp]
  1. void MainDlg::InitUI()  
  2. {  
  3.     // 给ComBox添加一些测试文本   
  4.     QString strContent;  
  5.     for(int i=0;i<10;i++)  
  6.     {  
  7.         strContent.sprintf("Text%.2d",i);  
  8.         ui->comboBox->addItem(strContent);  
  9.     }  
  10.     emit ui->comboBox->setCurrentIndex(0);  
  11.   
  12.     // 加载CSS文件   
  13.     QString strPath = QCoreApplication::applicationDirPath();  
  14.     qDebug()<
  15.     QString strCssFile = strPath + "/default.css";  
  16.     QFile fCss(strCssFile);  
  17.     if( !fCss.open(QFile::ReadOnly))  
  18.     {  
  19.         qDebug("css File %s load false",strCssFile);  
  20.         return;  
  21.     }  
  22.     QString strCssContent(fCss.readAll());  
  23.     setStyleSheet(strCssContent);  
  24.     fCss.close();  
  25. }  
阅读(1664) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~