我正在开发QT5.9应用程序(实际上是PyQt,但相对确定问题在于Qt本身)。在mac上,我发现QDialogs与setModal(真)或QWizards (无论如何都是模式)总是在所有运行的应用程序之上,因为在Info.plist (属于我的应用包)中,LSUIElement被设置为1 (这会将应用程序隐藏在码头上--这是可以的,因为用户通过托盘图标访问我的程序)。当LSUIElement != 1时,它的行为很好(其他前台窗口确实按预期覆盖我的应用程序)。
我需要为这些对话框设置什么特殊的windowFlags吗?或者这仅仅是一个Qt错误?
诚挚的问候!
发布于 2017-09-12 21:31:45
你可以通过目标C来完成这个任务。
#import <Cocoa/Cocoa.h>
void QMacUtils::MakeWindowTopmost( QWidget* widget, bool topmost )
{
id nsviewObject = reinterpret_cast<id>( widget->winId() );
id nsWindowObject = [nsviewObject window];
if( topmost )
{
[nsWindowObject setLevel:NSModalPanelWindowLevel];
}
else
{
[nsWindowObject setLevel:NSNormalWindowLevel];
}
}https://stackoverflow.com/questions/46175271
复制相似问题