QT 界面美化之 QStyle 应用
创始人
2024-08-01 09:00:32
0

本文介绍的是QT 界面美化QStyle 应用,对于美工,不管是设计还是开发,编程也一样,很希望自己的界面是舒服的,那么本文讲述的就是这些,请先来看内容。

QT中的QStyle类提供了对QT应用程序界面的封装,QT本身也是利用它应对不同平台下的界面外观的。例如 在windowxp下 你所写的程序的默认外观是通过QT自身调用QWindowsXPStyle来实现的.既然它提供了这么方便的类用来绘制独立于应用程序功能框架的程序外观,那想对自己程序的界面进行美化人,你确实很有必要去了解一下它。

虽然QT本身提供了多种外观样式设计的方法,如QT样式表,传说是一种从CSS得到的灵感,还有另一种就是利用QGraphicsView/QGraphics Scene/QGraphics Item这种框架来绘制的程序界面。前一个虽说很好用也很强大,但我个人总觉得来的不直观。后一个功能一样强大,QT的examples and demos那个程序就是用它做的,它能做些什么就要看你的想象力了,只不过场景和场景中所有的部件你必须要自己重画,它只提供了一些简单的点.线.矩形等等,将你现有的程序移植到新的利用QGraphicsView/Scene框架制作的界面上,显然所要的时间不会是你想要的。
     
QStyle提供给你的则是一种丑小鸭变天鹅的方法,可能这种比喻不是很贴切,但它达到的效果确实是立竿见影,不会让你的程序有涅磐般的感觉。假设你在windows环境调试QT程序,那么在你的main函数里的return exec()之前添加这么一句:qApp->setStyle(new QPlastiqueStyle); 再启动你的程序看看,虽然这对大部分人来说并不是天鹅,但就算变天鹅application也只是需要这一句话。

我们首先要做的就是重载我们要实现的QStyle基类,它派生出了:QMotifStyle,QWindowsStyle,QCDEStyle,QCleanlooksStyle,QPlastiqueStyle,QWindowsXPStyle等等样式,QMacStyle在Windows平台下无法使用,至少我没见过相关的示例程序.好了 我们派生的类叫MyStyle,class MyStyle : public QCleanLooksStyle.之后就是几个相关的重载函数,这几个重载的函数十分重要,他关系着你窗体绘制方式.如下:

  1. class MyStyle : public QCleanLooksStyle  
  2. {  
  3.    //以下三个函数在装载Style和卸载Style时调用,它可以是适当修改窗口部件和调色板  
  4.   void polish(QPalette &palette);  
  5.   void polish(QWidget *widget);  
  6.   void unpolish(QWidget *widget);  
  7.    //设置各部件的线宽,大小等  
  8.   int pixelMetric(PixelMetric metric, const QStyleOption *option,const QWidget *widget) const;  
  9.   //分别设置各种部件的布局,比如checkbox的text在左边或者在右边  
  10.   int styleHint(StyleHint hint, const QStyleOption *option,const QWidget *widget, QStyleHintReturn *returnData) const;  
  11.    //这个则是最重要的,在这里面你要实现对不同部件的绘制,当然你也可以调用默认的方法.  
  12.  void drawPrimitive(PrimitiveElement element, const QStyleOption *option,QPainter *painter, const QWidget *widget) const;  
  13.  } 

在 drawPrimitive里面 element这个参数就是我们需要重绘的部件,例如 我们要重新绘制QToolButton,则

  1. switch(element)  
  2. {  
  3. case PE_PanelButtonTool:  
  4.       //具体绘制  
  5. default:  
  6.       //调用基类的处理方法  
  7.       QCleanLooksStyle::drawPrimitive(element, option, painter, widget);  

具体各种部件的名称在QT助手里面都有说明,想了解更具体的QStyle使用方法,请查看:http://doc.trolltech.com/4.4/qstyle.html 或者您机器上的QT助手。

小结:QT 界面美化QStyle 应用介绍完了,希望本文对你有帮助,看来QStyle 的应用还是挺好的。

相关内容

热门资讯

如何允许远程连接到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 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...