Qt 以非阻塞方式使用QApplication

Qt 以非阻塞方式使用QApplication,qt,Qt,我想用“连接”,但如果我写 QApplication a(argc, argv); connect .... a.exec(); 我在最后一个命令(a.exec)后被阻止。但是如果我不使用这个命令,那么回调就不起作用 重要的是我没有打开任何窗户。我只想使用“连接”选项 如果不使用GUI,请使用QCoreApplication而不是QApplication 对不起,这不是个好答案 你应该考虑把你的连接移动到QT主事件循环中。如果这真的不是一个选项,您可能需要剥离另一个运行QCoreApplica

我想用“连接”,但如果我写

QApplication a(argc, argv);
connect ....
a.exec();
我在最后一个命令(
a.exec
)后被阻止。但是如果我不使用这个命令,那么回调就不起作用


重要的是我没有打开任何窗户。我只想使用“连接”选项

如果不使用GUI,请使用QCoreApplication而不是QApplication

对不起,这不是个好答案


<>你应该考虑把你的连接移动到QT主事件循环中。如果这真的不是一个选项,您可能需要剥离另一个运行QCoreApplication调用的线程。

您不必调用
app.exec()
。相反,您可以定期调用
QCoreApplication::processEvents()
。但是,除非您正在移植非Qt应用程序,否则不建议这样做。Qt中的很多功能都依赖于事件循环,如果您试图绕过它,就会遇到问题。如果可能的话,最好让您自己的代码与事件循环一起工作。

请您提供更多的代码。因为exec应该运行所有连接到QtSlots的回调,所以代码中一定有问题。你说的
connect
是指Qt的信号和插槽吗?这看起来像是XY问题-你到底想做什么?谢谢,但我使用的是使用QWidget的开源代码,with强迫我使用QapplicationTanks,但我使用的是使用QWidget的开源代码,with当然强迫我使用Qapplication。我建议的方法仍然包括创建一个
QApplication
,您只是不需要对其调用
exec()
。相反,您运行自己的循环并根据需要调用
processEvents()
。这就是我目前正在开发的应用程序在移植到Qt时必须做的事情,虽然不理想,但它确实可以工作。