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

我们经常会碰到需要定制界面控件的要求。如果只是在一个平台上,比如说你的控件只需要在Windows上显示,那很好办,Hard code 你的look and feel就可以了。但是如果界面需要在不同平台上显示native的界面风格,比如在Windows上就是Windows的风格,Mac上就是Mac的风格,难道需要为每个平台写不同的代码吗?另外,如果是在Qt这个平台上你需要修改整体的界面风格,同时你的程序也需要跨平台,那你可能需要为每个平台派生该平台下的QStyle对象(Windows上有QWindowsXPStyle,QVistaStyle,Mac上有QMacStyle,等等)。同样修改之后也需要将修改应用到其他平台上。有更好的解决方案吗?

 

回答是肯定的。 首先你可以参照这篇有点老的文章“http://doc.trolltech.com/qq/qq09-q-and-a.html#style ”,使用Proxy Pattern来实现。创建一个Proxy,然后定义一个指向当前平台的style实例,这样就可以很容易的做一些定制。不过创建Proxy的过程可能有一些繁琐,后期也需要根据QStyle的更新进行维护。Proxy是一个在Qt中使用的非常广泛的pattern,如果你对proxy pattern不熟悉的话,可以去Wiki上看看简要的说明。当然这种方法也存在一些问题。其中最大的一个问题,当调用被代理style的函数时,比如MyProxyStyle::DrawControl会去调用QWindowXPStyle::DrawControl,但是在DrawControl返回之前,后者永远只会

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值