QT界面美化之QStyle

原创 2010年01月04日 09:26:00

 

转贴: http://www.cppblog.com/umbcom/

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.之后就是几个相关的重载函数,这几个重载的函数十分重要,他关系着你窗体绘制方式.如下:
class MyStyle : public QCleanLooksStyle
{
   //以下三个函数在装载Style和卸载Style时调用,它可以是适当修改窗口部件和调色板
  void polish(QPalette &palette);
  void polish(QWidget *widget);
  void unpolish(QWidget *widget);
   //设置各部件的线宽,大小等
  int pixelMetric(PixelMetric metric, const QStyleOption *option,const QWidget *widget) const;
  //分别设置各种部件的布局,比如checkbox的text在左边或者在右边
  int styleHint(StyleHint hint, const QStyleOption *option,const QWidget *widget, QStyleHintReturn *returnData) const;
   //这个则是最重要的,在这里面你要实现对不同部件的绘制,当然你也可以调用默认的方法.
  void drawPrimitive(PrimitiveElement element, const QStyleOption *option,QPainter *painter, const QWidget *widget) const;
 }


在 drawPrimitive里面 element这个参数就是我们需要重绘的部件,例如 我们要重新绘制QToolButton,则
switch(element)
{
case PE_PanelButtonTool:
      //具体绘制
default:
      //调用基类的处理方法
      QCleanLooksStyle::drawPrimitive(element, option, painter, widget);
}

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

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

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

Qt程序界面美化一-- stylesheet

参考QtGUI4书本的例子 1、QApplication设置全局样式表 #include #include "candydialog.h" int main(int argc, ...

用Qt写软件系列三:一个简单的系统工具之界面美化

前言      在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出、进程子模块信息等功能,留到后面再来慢慢实现。这一篇来讲述如何对主界面进行个性化的定制。Qt库提供的只是最基本的组件功能,使...

QT界面美化

转自点击打开链接 - 经验总结 1. 可用对话框(QDialog)模拟类似Android中toast的效果。 - 设置程序界面风格 在main函数中 QA...

QT界面美化

  • 2016-03-29 10:14
  • 701KB
  • 下载

2048界面美化可悔棋版(Qt)

  • 2016-12-30 16:32
  • 49.04MB
  • 下载

《Qt》part 8 QSS+按键菜单——界面美化3

《Qt》part 8 QSS+按键菜单——界面美化3 一、功能: 1、创建按键菜单; 2、QSS对界面进行美化; 二、效果: 三、代码: 1、QSS_MeiHua1.h #ifndef QS...

《Qt》part 7 QSS参考样式表——界面美化2

《Qt》part 7 QSS参考样式表——界面美化2 一、QSS1 参考样式表1: *{ font-size:13px; color:white; font-family:"宋...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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