在OSX上与Qt保持一致

随着Qt 4.8,我想设置我的框架“保持在上面”。 Qt的方式并不完美,因为它需要重新创build包含丑陋闪烁的窗口。

在Win32下,它存在一个本地方法:

SetWindowPos(winId(), <HWND_TOPMOST:HWND_NOTOPMOST>, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); 

但是我必须在OS-X下使用哪些代码?

下面是我用来在Linux,Mac和Windows上设置最高层窗口的代码:

 setWindowFlags( #ifdef Q_OS_MAC Qt::SubWindow | #else Qt::Tool | #endif Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowStaysOnTopHint ); 

您可以通过克隆该存储库来查看代码工作的演示: https : //github.com/pcmantinker/Tray-Notification-System

我建立了这个版本库来制作一个类似于Mac OS X的咆哮的通知系统。 它也经过了优化,使其在运行全屏应用程序时不会占用重点,如果您正在玩游戏或观看视频,那么该应用程序是非常棒的。 它应该给你一个开始。