Her*_*nán 3 events qt multithreading loops qlocalsocket
我正面临着Qt的实际问题.我正在使用一个与QLocalSocket通信的类到另一个进程(管道/ unix套接字),我需要在其他事件发生之前进行通信,即在app.exec()启动之前(或者更确切地说,应用程序启动之后) ).我正在使用的类需要一个eventloop,所以如果我在启动事件循环之前调用类方法它就不起作用.事件循环准备好后,有什么办法可以启动吗?我想要创建一个隐藏的仅限事件的窗口,并在隐藏的窗口构造函数中执行我的职责,并将此窗口固定为顶层.
基本上,我需要这个本地套接字通信任务在事件循环可用时立即启动.
有任何想法吗?
谢谢.
在调用QApplication :: exec()之前,您可以使用QEventLoop启动单独的eventloop .您应该从类中发出"完成"信号并将其连接到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_()
Run Code Online (Sandbox Code Playgroud)
虽然这可能适合您的需求,但我不太明白为什么在窗口上调用show()之前不能简单地做任何事情,一旦完成,请调用show().
归档时间: |
|
查看次数: |
1561 次 |
最近记录: |