gpt4 book ai didi

Qt4.5 : Using event-loop based localsocket before app. 执行

转载 作者:行者123 更新时间:2023-12-04 19:32:12 25 4
gpt4 key购买 nike

我在使用 Qt 时遇到了一个实际问题。我正在使用一个与 QLocalSocket 通信到另一个进程(管道/unix套接字)的类,我需要在其他事件发生之前进行通信,即在 app.exec() 启动之前(或者更准确地说,一旦应用程序启动)。我正在使用的类需要一个事件循环,所以如果我在事件循环开始之前调用类方法,它就不起作用。当事件循环准备好时,有什么方法可以开始?我想制作一个隐藏事件专用窗口,并在隐藏窗口构造函数中完成我的职责,并将此窗口稳定为顶层。

基本上,我需要在事件循环可用时立即启动此本地套接字通信任务。

有什么想法吗?

谢谢。

最佳答案

您可以使用 QEventLoop 启动一个单独的事件循环, 在调用 QApplication::exec() 之前。您应该从您的类发出一个“完成”信号并将其连接到 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()。

关于Qt4.5 : Using event-loop based localsocket before app. 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1754256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com