1

使用 Qt 4.8,我想将我的框架设置为“保持在顶部”。Qt 方式并不完美,因为它需要重新创建涉及丑陋闪烁的窗口。

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

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

但是在 OS-X 下我必须使用什么代码?

4

1 回答 1

8

这是我用来在 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 的 Growl 的通知系统。它还经过优化,因此在运行全屏应用程序时不会窃取焦点,如果您正在玩游戏或观看视频,这非常棒。它应该给你一个开始。

于 2012-09-20T18:11:32.497 回答