您可以在调用 QApplication::exec() 之前使用QEventLoop启动一个单独的事件循环。您应该从您的类发出一个“完成”信号并将其连接到 QEventLoop quit() 插槽,或者使用您正在使用的 Qt 类中提供的现有信号。
这是一个使用 QNetworkAccessManager 获取网页的简单示例:
app = QtCore.QCoreApplication([])
manager = QtNetwork.QNetworkAccessManager()
req = QtNetwork.QNetworkRequest(QtCore.QUrl("http://www.google.com"))
resp = manager.get(req)
eventloop = QtCore.QEventLoop()
eventloop.connect(resp, QtCore.SIGNAL('finished()'), QtCore.SLOT('quit()'))
eventloop.exec_() # this will block until resp emits finished()
print resp.readAll()
app.exec_()
虽然这可能适合您的需求,但我不太明白为什么您不能在窗口上调用 show() 之前简单地做任何事情,一旦完成,调用 show()。