首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >macOS:避免Qt模式对话框(QDialog,QWizard)用LSUIElement=1覆盖所有内容

macOS:避免Qt模式对话框(QDialog,QWizard)用LSUIElement=1覆盖所有内容
EN

Stack Overflow用户
提问于 2017-09-12 11:31:06
回答 1查看 282关注 0票数 0

我正在开发QT5.9应用程序(实际上是PyQt,但相对确定问题在于Qt本身)。在mac上,我发现QDialogs与setModal(真)或QWizards (无论如何都是模式)总是在所有运行的应用程序之上,因为在Info.plist (属于我的应用包)中,LSUIElement被设置为1 (这会将应用程序隐藏在码头上--这是可以的,因为用户通过托盘图标访问我的程序)。当LSUIElement != 1时,它的行为很好(其他前台窗口确实按预期覆盖我的应用程序)。

我需要为这些对话框设置什么特殊的windowFlags吗?或者这仅仅是一个Qt错误?

诚挚的问候!

EN

回答 1

Stack Overflow用户

发布于 2017-09-12 21:31:45

你可以通过目标C来完成这个任务。

代码语言:javascript
复制
#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];
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46175271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档