我想在非 GUI Qt 应用程序中使用 QWebPage
。我的意思是我根本不想与窗口服务器通信。不过,使用 QtGui 不是问题。
QWebPage
在内部创建一些 QWidget
实例。因此,使用 QCoreApplication
是不可能的。
但是,当创建 QApplication
实例时,我已经立即获得了一个 MacOSX 停靠图标。我不想要这样。这也意味着它以某种方式在 Cocoa 中将自己注册为 GUI 应用程序。
我的问题不仅仅适用于 Mac。我想知道 Qt 是否有“官方”方式来做到这一点。仅当没有时,我才想知 Prop 体的方法,例如目前在 Mac 上。
<小时/>关于 Mac 的更具体的信息:
还有LSBackgroundOnly属性,可以为应用程序包设置,并且进入我想要的方向(因此我仍然不确定它是否真的是真正的仅限控制台,例如,在没有 Quartz 的情况下也可以工作,等等)。但是,我根本没有应用程序包;它只是一个简单的二进制文件(用作 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()
此外,我不确定它是否也适用于其他环境,也许作为系统守护进程等。
最佳答案
您可以使用 QPA 来完成此操作。这恰好是 PhantomJS 实现 headless 的方式。修改 QT 预配置文件以指定 QPA:
QT_CFG +=' -qpa' # X11-less with QPA (又名 Lighthouse)
还有一些关于 QMinimalWindowSurface 的内容。
https://github.com/ariya/phantomjs/commit/6c8a1c2dc1 https://github.com/ariya/phantomjs/commit/c78ae190a9
关于qt - 如何在非 GUI 应用程序中使用 QWebPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213215/