【发布时间】:2023-04-09 14:06:01
【问题描述】:
我想在非 GUI Qt 应用程序中使用QWebPage。我的意思是我根本不想与窗口服务器通信。不过,使用 QtGui 不是问题。
QWebPage 在内部创建一些 QWidget 实例。因此,无法使用QCoreApplication。
虽然在创建 QApplication 实例时,我已经立即获得了 MacOSX 停靠图标。我不希望那样。这也意味着它以某种方式在 Cocoa 中将自己注册为 GUI 应用程序。
我的问题不仅限于 Mac。我想知道 Qt 是否有“官方”的方式来做到这一点。只有在没有的情况下,我才想知道执行此操作的具体方法,例如现在在 Mac 上。
关于 Mac 的更具体一点:
还有LSBackgroundOnly 属性,可以为应用程序包设置,并朝着我想要的方向发展(因此我仍然不确定它是否真的是真正的控制台专用,例如也可以工作没有石英等)。但是,我根本没有 App 包。它只是一个简单的二进制文件(用作 shell 中的命令行工具)。
目前,我有一个小解决方法来隐藏停靠图标,但这非常难看,因为它首先弹出然后消失:(Python 代码,但这并不重要......)
def hideMacDockIcon():
# http://stackoverflow.com/a/9220857/133374
import AppKit
# https://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSRunningApplication_Class/Reference/Reference.html
NSApplicationActivationPolicyRegular = 0
NSApplicationActivationPolicyAccessory = 1
NSApplicationActivationPolicyProhibited = 2
AppKit.NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited)
app = QApplication(sys.argv)
if sys.platform == "darwin":
hideMacDockIcon()
另外,我不确定它是否也适用于其他环境,可能作为系统守护程序等。
【问题讨论】: