请教用Qt设置窗体属性为Qt::CustomizeWindowHiti后,怎么实现单击任务栏图标,让程序最小化

co609 2012-10-23 10:43:54
请问设置窗体的外观为Qt::CustomizeWindowHiti后,单击任务栏图标可以还原,但是无法最小化的问题怎么解决!

网上搜索了很多,都说是托盘自己弄个小图标,不过我觉得这是退而求其次的方法,有什么方法可以直接搞定吗?

其实问题和 http://blog.csdn.net/jhqin/article/details/6013286 帖子的是一样的,不过那个是C#,求Qt的方法。谢谢
...全文
1389 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyun 2013-04-27
  • 打赏
  • 举报
回复
引用 楼主 co609 的回复:
请问设置窗体的外观为Qt::CustomizeWindowHiti后,单击任务栏图标可以还原,但是无法最小化的问题怎么解决! 网上搜索了很多,都说是托盘自己弄个小图标,不过我觉得这是退而求其次的方法,有什么方法可以直接搞定吗? 其实问题和 http://blog.csdn.net/jhqin/article/details/6013286 帖子的是一样的,不过那个是C#,求Qt的方法。谢谢
我也遇到同样的问题。使用Custom,无法minsize/restore。你解决了吗?如何解决的?
xuliherry 2012-12-18
  • 打赏
  • 举报
回复
引用 5 楼 co609 的回复:
引用 3 楼 的回复:setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 这样写可以实现你的要求,就是要自己处理鼠标缩放窗口的问题。 这个方法我用过,不过没有自定义调整大小的边框。比较郁闷,要求用custom的,然后单击……
你的意思是你的窗口要设计成可以伸缩是吧? 反正不伸缩的话三楼已经能实现了
phpqinsir 2012-11-23
  • 打赏
  • 举报
回复
我说一个我的技巧吧。我的是自定义的标题栏。就像QQ或者360软件一样的标题栏。实现的效果如QQ一样,关闭的时候就在系统托盘显示一个图标,点击图标的时候显示软件界面。完全与QQ一样。使用的如下代码:
setWindowFlags(Qt::SplashScreen | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);


xiachm 2012-10-26
  • 打赏
  • 举报
回复
建议按照3楼的说法去做,别嫌麻烦,这几乎是最标准的做法了。
co609 2012-10-26
  • 打赏
  • 举报
回复
没人了解吗?有没有人有比较好的方法呢?
co609 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

建议按照3楼的说法去做,别嫌麻烦,这几乎是最标准的做法了。
[/Quote]

麻烦倒是不麻烦,只是要求用custom,如果是frameless我就不愁了
co609 2012-10-25
  • 打赏
  • 举报
回复
顶一下,麻烦知道的人帮忙解答下吧,谢谢!
  • 打赏
  • 举报
回复
不懂,帮顶一下。
co609 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

没有什么好方法,只能自己在窗口顶端建造一个工具栏,实现关闭、最小化、最大化什么的
[/Quote]

我已经自己做了最大化最小化按钮,但是任务栏中的图标,单击后不会最小化,只能还原
co609 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
这样写可以实现你的要求,就是要自己处理鼠标缩放窗口的问题。

厉害,果然可以!

只是处理大小调整时会比较麻烦。

感觉就是窗口管理器给窗口发了一个隐藏或是……
[/Quote]

我现在想着用Qt的eventFilter来解决这个问题,不过暂时没有想到很好的判断条件,我debug了下,每次会调用paint,repaint,active和activechange四个事件
co609 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
这样写可以实现你的要求,就是要自己处理鼠标缩放窗口的问题。
[/Quote]

这个方法我用过,不过没有自定义调整大小的边框。比较郁闷,要求用custom的,然后单击任务栏还得最小化,比较郁闷。
xiachm 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
这样写可以实现你的要求,就是要自己处理鼠标缩放窗口的问题。
[/Quote]
厉害,果然可以!

只是处理大小调整时会比较麻烦。

感觉就是窗口管理器给窗口发了一个隐藏或是最小化的消息,如果楼主只在win32下跑,我想到也可是尝试使用本地API去捕捉这个消息
jdwx 2012-10-25
  • 打赏
  • 举报
回复
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
这样写可以实现你的要求,就是要自己处理鼠标缩放窗口的问题。
xiachm 2012-10-25
  • 打赏
  • 举报
回复
没有什么好方法,只能自己在窗口顶端建造一个工具栏,实现关闭、最小化、最大化什么的

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧