如何在OSX中执行时强制Qt应用程序成为活动/前台窗口

How to force a Qt Application to be the active/foreground window upon execution in OSX?

本文关键字:应用程序 活动 窗口 前台 Qt OSX 执行      更新时间:2023-10-16

我正在浏览OSX上的Qt教程。我注意到的一件事是,当我启动可执行文件(例如按钮hello world示例)时,该应用程序将作为后台窗口启动,我必须切换任务才能将其置于前台。如何在执行时强制Qt应用程序窗口成为前台窗口?

我想这样做,因为这是大多数应用程序的行为方式,更不用说手动切换任务会减慢我的编辑-编译-运行-调试周期)。

观察到的行为是由于使用 ⌘-Y 在调试器下启动应用程序时与调试器的交互。如果您只是使用 ⌘-R 运行它,它的行为会符合您的预期。您的应用程序本身很好。

通过直接从终端从应用程序包中启动可执行文件来启动 OS X 应用程序将类似于使用 ⌘-Y 运行它们 - 它们都在后台启动。Qt可能模仿了Finder通过⌘-R启动该过程时所做的任何魔术 - 所述魔术可能会简化为简单地将子应用程序带到前台。OS X 上的 gdb 不是那么"聪明",这可能是有充分理由的。

OS X的方法是更加努力地不偷走焦点 - 恕我直言,这是一件好事。

如果您只想运行应用程序,而不是调试它,请将启动命令修改为类似于 open -a '/Users/daj/foo/bar/baz.app' ,其中 baz.app 是应用程序包文件夹。不要附加尾部斜杠。

如果你可以诱导你的调试器遵循子进程,那么你当然可以在gdb下启动open自身,它将按预期工作 - 你的子应用程序在上面。