问题标签 [qeventloop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 何时以及如何使用 PySide QEventLoop
我有一个应用程序,我尝试使用 while 循环但应用程序只是挂起,现在我认为我需要使用 QEventLoop 使应用程序工作这里是一些相关代码
我想要的是能够开始、暂停和停止按钮,我是初学者,所以我在使用 QLineEdit 时可能会出错,在这种情况下,我会很感激一些关于更好实施的建议
multithreading - QThread:从主线程调用子线程方法
我有一个通过继承创建的线程QThread
,我调用它exec()
来启动事件循环。而这个继承的类QThread
里面有一个方法。
如何从主线程调用该方法以使其在子线程中执行?我假设该方法的执行必须在子线程的事件循环中排队,所以调用threadObject->childThreadMethod()
不是一个好主意。有什么解决办法吗?
qt - 通过此指针从静态函数调用时 QEventLoop 未运行?
我有一个 QCoreApplication,它在启动期间加载不同的 QtPlugins,这些插件从各种来源获取数据。该数据通过注册的回调函数(每个插件相等)推送回我的 QCoreApplication。回调注册如下:
现在我遇到了以下问题:在其中一个插件中,第三方库通过网络接收了数据。数据将与包含指向插件类的 this 指针的自定义结构一起推送到我的插件类的静态成员函数。当我在插件中接收数据时,我现在想通过注册的回调将其推送到我的 QCoreApplication 。此外,我想在回调函数中创建新对象(如 QTimer)。但是,当通过插件类的 this 指针从静态成员函数调用回调函数时,似乎没有运行事件循环。查看创建的 QTimer 对象的成员时,它的 QAbstractEventDispatcher 指针为 0。因此,QTimer 对象不能发出任何信号,这是我迫切需要的。
我认为通过插件类的 this 指针调用回调函数(QEventLoop 肯定正在运行,因为我可以使用插件内部的信号/插槽以及从插件的其他非静态成员函数到我的 QCoreApplication 没有问题)。不过,好像我错了。有人对所描述的行为有解释吗?如果需要任何其他详细信息,请询问他们,我会尽力提供。
问候,罗伯特
c++ - 在 QThreadPool 中执行槽
我有一个应该在线程中运行的类,并且需要一个用于插槽的事件循环,目前我用它很好地运行它moveToThread()
,但我想使用它QThreadPool
并且遇到了问题。
当从池线程调用我的 runnableQThreadPool
的方法运行时(我用run()
QThread::currentThread()
我认为这是因为我知道插槽是在接收器的线程中运行的,这正是我在使用moveToThread()
方法和 a时得到的(正确)行为QThread
。
如何让我的QRunnable
(在下面的示例中为 Foo)完全在池线程中运行?还是我做错了什么或理解错了?
以下 POC 演示了该问题:
foo.h
foo.cpp
主文件
但是请注意,在我的真实代码中,信号不会立即发出,因为它会在我收到网络上的一些数据之后发出。
PS:POC 也可以在这里找到。
qt - 在 Qt 4.8x 中不继承 QThread 时,必须如何使用 QEventLoop?
我读过有两种使用 QThread 的方法。如果我有一个继承 QObject 的 Worker 类(如http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/),那么我应该如何创建和管理本地 QEventLoop 以使用信号/插槽?我不想有内存泄漏。QNetworkAccessManager 应该如何在http://codethis.wordpress.com/2011/04/04/using-qthread-without-subclassing/中描述的工人中创建?
c++ - 有和没有事件循环的线程之间的区别
带有事件循环的线程
我们在一个单独的线程中创建了一个 QTcpServer 对象,它正在侦听传入的连接并在它们发生时对其进行处理。在某些时候,它被删除了,并且没有任何东西可以在线程中生成事件。
如果不手动删除,线程是否会进入无限块(使用内存但没有 cpu)?
没有事件循环的线程
一个 QTcpServer 对象已创建并正在侦听。
QTcpServer.listen()是否阻止线程运行所有代码并自然完成?
传入的连接呢?是否必须手动轮询?
qt - QEventLoop 使用(信号和槽)
我有一个包含这些行的应用程序。
信号改变了 的值currentWindowIndex
,但是由于槽的原因它没有工作,它没有及时改变它的值。有人建议我使用QEventLoop
,但我不明白如何做到这一点。请给我一个例子。代码的另一部分:
我认为它可以提供帮助。
MyMdArea
is сclass 继承自QMdiArea
, WorkSpace
is a QWidget
, TabsList
is a QTabBar
。还有一个事实:我试图了解插槽的执行顺序并在代码中添加了一些行:
发出WindowAdded
信号后
发出addedWindowIndex
信号后
和
改变后currentWindowIndex
的价值
这就是我看到的“1 2 3”,它让我的大脑爆炸了。也许我不明白什么?
c++ - 如何在不阻塞的情况下启动 Qt 事件进程?
这是我的场景:我有一个 dll(在后端使用 Qt,并且没有启动事件循环)。我能够在这个 dll 中执行信号槽通信(只有一个线程)。我想在这个 dll 中使用 QFileSystemWatcher 的功能。但看起来,QFileSystemWatcher 启动了自己的线程,由于没有事件进程,它无法与我的主线程通信。
所以,基本上我需要一种方法来启动事件处理而不被阻塞!
python - Qt:如何等待多个信号?
我正在使用 PySide 和 Qt 开发各种 GUI 测试库。到目前为止,当测试用例只需要等待一个条件发生(例如信号或超时)时,它工作得非常好,但我的问题是在继续进行数据验证之前必须等待多个条件发生。
测试运行器在自己的线程中工作,以免过多地干扰主线程。等待信号/超时发生在事件循环中,这是可以很好地工作的部分(简化示例):
等待必须是同步的,因此事件循环是可行的方法,但它不适用于多个信号。等待多个条件中的任何一个当然是可能的,但不要等待多个条件/信号全部发生。那么关于如何进行此操作的任何建议?
我正在考虑一个辅助类,它计算接收到的信号数量,然后在达到所需数量后发出一个 ready() 信号。但这真的是最好的方法吗?助手还必须检查每个发送者,以便只考虑特定信号的一个“实例”。
c++ - QFile 在程序退出时保存文件,根本不会保存 ~500MB 文件
是的,伙计们,又是我。我有以下代码:
我有两个问题:
当我单击按钮时,它会下载文件但不会将它们写入硬盘。我可以等 5 到 10 分钟,什么都没有。此时,整个文件存储在程序存储器中。如果我关闭我的程序,它们会保存在磁盘上。
根本不保存大文件 (~500MB)。当我关闭我的程序时,它会立即崩溃。
我如何编辑它以便我的程序“实时”保存下载的文件?