macos Qt::ApplicationModal导致全屏的时候无法现在在窗口前面 如何解决
时间: 2024-01-21 12:19:47 浏览: 97
TrueFramelessWindow:在Windows和macOS上均具有Qt的真正无框架窗口
这是因为 macOS 的全屏模式会创建一个新的空间,使得应用程序窗口位于新的空间中,而 Qt::ApplicationModal 在 macOS 下会阻塞当前线程并且禁用当前窗口之外的其他窗口,所以无法在新的空间中弹出对话框。
解决方法是在调用对话框时使用 Qt::Sheet 模式,这样会在当前窗口上方弹出对话框,而不是将其置于当前空间的顶层。
示例代码如下:
```cpp
QDialog dialog(this);
dialog.setWindowModality(Qt::WindowModal);
dialog.setWindowFlags(dialog.windowFlags() | Qt::Sheet);
dialog.exec();
```
另外,如果您的应用程序需要在 macOS 下使用全屏模式,建议使用 Qt::WindowFullScreen 模式,而不是使用 macOS 的全屏模式,这样可以避免一些兼容性问题。
阅读全文