21,474
社区成员
发帖
与我相关
我的任务
分享创建了一个对话框,设置为不在任务栏上显示图标,setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);,但是调用showMinimized()最小化隐藏后,会在桌面显示一个类似按钮的对话框,如下图的myDlg的一个小窗口,怎么不显示这个对话框?
如果调用hide隐藏,所有模式子对话框都会自动退出。所以还是想用showMinimized(),可以将所有子对话框一起隐藏掉,调用showNormal()还可以全部恢复。

这个问题是因为在Qt::FramelessWindowHint下,最小化后的窗口在某些系统上会显示为桌面小窗口。有几种解决方案:
最佳解决方案:修改窗口标志
在设置窗口标志时添加Qt::WindowMinMaxButtonsHint
5:
cpp
Copy Code
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);
替代方案:使用系统菜单提示
或者使用Qt::WindowSystemMenuHint
2:
cpp
Copy Code
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint);
原因分析
当只设置Qt::FramelessWindowHint时,系统可能无法正确处理最小化行为,导致显示为桌面小窗口。添加窗口按钮提示可以让系统正确识别窗口的最小化状态
5。
推荐做法
建议在窗口初始化时使用完整的窗口标志组合,这样可以确保最小化行为在所有平台上都正常工作,同时保持无边框的视觉效果
2
5。
你可以先尝试第一种方案,通常就能解决问题。如果仍有异常,再考虑第二种替代方案。