• 7870阅读
  • 14回复

qt4如何更改titlebar样式 [复制链接]

上一主题 下一主题
离线lhca
 
只看楼主 正序阅读 楼主  发表于: 2010-12-09
我在win下编程。看很多软件的最小化按钮及程序的标题很漂亮。
可是不知道改怎么做。
哪位能给介绍一下。
离线wxj120bw

只看该作者 14楼 发表于: 2010-12-10
to xinqingfly 子窗口最大化停靠主窗口重载相应的函数 猜的 呵呵
离线xinqingfly

只看该作者 13楼 发表于: 2010-12-10
QSS 不能控制标题栏的,如果自己使用工具栏来替代标题栏而把标题栏隐藏掉,那如果是多文档窗口则子窗口无法进行最大化停靠主窗口,很纠结
菜鸟也是鸟
离线lhca
只看该作者 12楼 发表于: 2010-12-10
回 11楼(wxj120bw) 的帖子
谢谢.
找到一个这个http://blog.chinaunix.net/u/28371/showart_1934860.html
不过有点问题.
换皮肤的问题感觉用QSS好一点.就是麻烦.呵呵.
离线wxj120bw

只看该作者 11楼 发表于: 2010-12-09
to lhca 网上有类似的重绘自己的标题栏的源程序 你自己找下吧 不过要实现自己的皮肤 可就麻烦了 就像7楼说的那样
离线lhca
只看该作者 10楼 发表于: 2010-12-09
回 9楼(pjincz) 的帖子
hehe
没关系,调试一下挺好的.

我想做程序的皮肤,就差这个不会改了.可是现在网上很多软件的皮肤都是自定义的.很少有用win默认的了.
但是我搞了一周了也没明白.
离线pjincz
只看该作者 9楼 发表于: 2010-12-09
回 8楼(lhca) 的帖子
不好意思 我看错需求了,我以为你需要的是控制MDI子窗口的那3个按钮。
请参照7楼的方法实现。。。。。
离线lhca
只看该作者 8楼 发表于: 2010-12-09
看来我和漂流的要求类似啊.

不过我调试程序发现CC_MdiControls这种情况没有发生.是不是因为我用QMainWindow的原因??
离线pjincz
只看该作者 7楼 发表于: 2010-12-09
回 6楼(飘流) 的帖子
标题栏不可以。这个是严格windows控制的。不过有两种方法。
1 如果不在vista 创建顶层窗口的时候指定FramelessWindowHint,然后用SetMask设置形状。最后自己画标题就可以了,中间弄个区域放原来的窗口。不过这个时候需要处理最大化请求,否则很悲剧。具体可以拦截WM_GETMINMAXINFO,也可以拦截Qt的最大化事件。
2 如果在vista 并且需要毛玻璃效果。那么需要拦截很多windows API,具体参考网上其它文件,这里就不介绍了。
离线飘流

只看该作者 6楼 发表于: 2010-12-09
回 5楼(pjincz) 的帖子
从QProxyStyle派生的话,可以改变MainWindow的标题栏?
离线pjincz
只看该作者 5楼 发表于: 2010-12-09
回 4楼(lhca) 的帖子
是有一些麻烦。
可以不从QProxyStyle派生,不过程序会变的很丑,因为我们只需要改变其中某一项的绘制而已。
离线lhca
只看该作者 4楼 发表于: 2010-12-09
回 2楼(pjincz) 的帖子
只能从QProxyStyle派生吗???
离线lhca
只看该作者 3楼 发表于: 2010-12-09
回 2楼(pjincz) 的帖子
先谢谢了。

是不是很麻烦啊?
离线pjincz
只看该作者 2楼 发表于: 2010-12-09
从QProxyStyle拍摄出一个自己的类,然后从Application中取出原来的style,设为代理目标。
重写QProxyStyle中的drawComplexControl函数,处理ComplexControl 参数为CC_MdiControls的情况,其他情况可以调用父类默认处理。
如果想要重新处理布局等,参考QStyle上相关的虚函数。
离线飘流

只看该作者 1楼 发表于: 2010-12-09
同问…等待高手…
快速回复
限100 字节
 
上一个 下一个