c++ - 如何强制 Qt 应用程序在 OSX 中执行时成为事件/前景窗口?

标签 c++ macos qt user-interface window

我正在学习 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 本身,它会按预期工作——您的子应用程序位于顶部。

关于c++ - 如何强制 Qt 应用程序在 OSX 中执行时成为事件/前景窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146815/

相关文章:

git - 清除 Github Desktop OSX 上的 stash 存储?

swift - 如何读取屏幕EDID数据?

macos - OSX 游戏中心 : Couldn't communicate with a helper application

c++ - 日志记录设施和 Qt

android - 铛++ : error: linker command failed with exit code 1 Qt Android

c++ - 在循环中取消分配内存

c++ - unordered_multimap 在 gnu++11 和 c++0x 中的不同行为

c++ - 即使不需要也实现迭代器? C++

c++ - 未记录的 C++ 预处理器指令 (MSVC 2013u4)

c++ - QT窗口中DirectX11渲染不丢失其他widgets