QT 界面美化之 QStyle 应用

转载 2012年03月23日 11:12:41
 

假设你在windows环境调试QT程序,那么在你的main函数里的return exec()之前添加这么一句:qApp->setStyle(new QPlastiqueStyle); 再启动你的程序看看,效果肯定不一样。

AD:


本文介绍的是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);
  8. }

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

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

Qt之操作数据库(SQLite)

SQLite 简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备...
  • catemo
  • catemo
  • 2016年11月29日 03:09
  • 520

使用QUiLoader来动态加载.ui文件

在你的QT工程中使用ui文件 本文仅仅是从QT帮助中全文取下来的,因为这一部分比较隐蔽. Qt Designer UI files represent the widget tree of...

Qt中如何通过QStyle自定义能够跨平台的界面控件

我们经常会碰到需要定制界面控件的要求。如果只是在一个平台上,比如说你的控件只需要在Windows上显示,那很好办,Hard code 你的look and feel就可以了。但是如果界面需要在不同平台...

零基础学Qt 4编程实例之如何设置Qt应用程序的观感-使用QStyle类

Qt样式表是专为设置应用程序的观感(look and feel)而生的,它是从Qt 4.2开始引入的描述窗口部件观感的强大机制,允许你按照自己的需求定制应用程序的观感。并且从Qt 4.5开始,Qt样式...

QT内置的ICON资源保存在QStyle类里。

QT内置的ICON资源保存在QStyle类里。 可以通过成员函数 的QStyle :: standardIcon,en 来获取。 保存的icon有: 枚举的QStyle ...

自定义QT窗口部件外观之QStyle

自定义QT窗口部件外观 重新定义Qt内置窗口部件的外观常用的方法有两种:一是通过子类化QStyle 类或者预定义的一个样式,例如QWindowStyle,来定制应用程序的观感;二是使用Qt样式表。 ...

QT自定义控件外观(QStyle)

QStyle学习与使用 QStyle 简介 1、创建自定义的QSytyle 静态方式:一般情况下,我们通过子类化一个QStyle,实现它的虚函数来实现自定义行为。或者从头开始自己创建一个QS...

【QT】3 - [QStyle] Qt状态单位解释列表

List of Property Types The following table summarizes the syntax and meaning of the different prope...
  • bbdxf
  • bbdxf
  • 2014年04月01日 17:42
  • 1778

【QT】3 - [QStyle] Qt常用组件属性说明

Widget 简单的中文翻译 How to Style QAbstractScrollArea 支持盒子模型,所有QAbstractScrollArea...
  • bbdxf
  • bbdxf
  • 2014年04月01日 17:39
  • 3713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT 界面美化之 QStyle 应用
举报原因:
原因补充:

(最多只允许输入30个字)