创建真正的无头 QApplication 实例

Create a truly headless QApplication instance

本文关键字:QApplication 实例 创建      更新时间:2023-10-16

我有一个Qt 5.8(通过PyQt5)应用程序,它的许多测试需要一个实时QApplication实例来测试gui小部件交互。

但是,在我的新Mac OS X(10.11.6)机器上,运行这些测试时,窗口不断被创建和销毁,导致整个系统的UI变得非常不稳定(尽管测试按预期通过)。

我的测试甚至没有调用QApplication.exec()-QApplication()构造函数足以导致这种情况。在我的 Linux 机器上,这没有问题,因为没有创建窗口(至少在我的 X 配置下)。

QCoreApplication不是一个选项,因为需要创建和使用实际的 GUI 小部件。尝试交换两者会导致大量测试失败。

Qt 5.8 中有没有办法在不使用QCoreApplication的情况下创建一个真正的无头QApplication实例?

我遇到了同样的问题,我认为解决方案是将参数-platform offscreen添加到QApplication的命令行中。

我在这里找到了信息

假设应用程序可执行文件名为app_exe

int main(int argc, char* argv[])
{
int argument_count = 3;
char* argument[3];
argument[0] = const_cast<char*>("app_exe");
argument[1] = const_cast<char*>("-platform");
argument[2] = const_cast<char*>("offscreen");
QApplication app(argument_count, argument);
return app.exec();
}

因此,您应该运行应用程序,但不显示任何 GUI。要查看应用程序是否正在运行,您应列出所有正在运行的任务,并且您的应用程序应位于其中。