我正在阅读有关 OSX 的 Qt 教程。我注意到的一件事是,当我启动可执行文件(例如,按钮 hello world 示例)时,应用程序将作为后台窗口启动,我必须切换任务才能将其置于前台。如何在执行时强制 Qt 应用程序窗口成为前台窗口?
我想这样做,因为这是大多数应用程序的行为方式,更不用说手动切换任务会减慢我的编辑-编译-运行-调试周期)。
我正在阅读有关 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 本身,它会按预期工作 - 将您的子应用程序放在顶部。