如何在非GUI应用程序中使用QWebPage

Alb*_*ert 4 qt qt4 qwebpage qwebkit

我想QWebPage在非GUI Qt应用程序中使用.通过这个,我的意思是我根本不想与窗口服务器通信.但是,使用QtGui不是问题.

QWebPage在内部创建一些QWidget实例.因此,使用QCoreApplication是不可能的.

在创建QApplication实例时,我已经立即获得了一个MacOSX停靠图标.我不希望这样.它还意味着它以某种方式在Cocoa中将自身注册为GUI应用程序.

我的问题不是Mac版.我想知道Qt是否有"官方"方式来做到这一点.只有在没有的情况下,我才想知道具体的方法,例如在Mac上.


关于Mac的更具体一些:

还有一个LSBackgroundOnly属性,可以为App包设置,它可以指向我想要的方向(我仍然不确定它是否真的是真正的控制台,例如,如果没有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()
Run Code Online (Sandbox Code Playgroud)

此外,我不确定它是否也适用于其他环境,可能是系统守护程序等.

kan*_*ure 5

你可以用QPA做到这一点.这恰好是PhantomJS如何实现无头.修改了QT preconfig文件以指定QPA:

QT_CFG +=' -qpa' # X11-less with QPA (aka Lighthouse)

还有一些关于QMinimalWindowSurface的内容.

https://github.com/ariya/phantomjs/commit/6c8a1c2dc1 https://github.com/ariya/phantomjs/commit/c78ae190a9

  • 我在查找更多相关信息时遇到了一些麻烦.[here](http://blog.qt.digia.com/blog/2011/05/31/lighthouse-has-grown-up-now/)是Lighthouse的首次公告.它似乎从Qt 4.8开始包括在内.但是(为什么)你需要编译器配置选项吗?是不是(Qt平台抽象)总是存在的东西,因为它是一个抽象?此外,在此过程中,我还发现了[node-chimera](https://github.com/deanmao/node-chimera). (2认同)