问题标签 [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.
c++ - 在 QRunnable 中调用 QEventLoop(连接多个设备)
我有一个 QthreadPool 可以同时连接多达 5 个串行设备。每个串行设备定义为:
在 GUI 中,单击按钮后,我调用串行设备管理器serialManager->startAcquisition(portNames)
,如下所示:
连接设备后,我会轮询设备。调用停止函数时线程终止。我希望readyRead()
正在发出信号,以便填充sensor->portData
:
问题定义:
没有readyRead()
发出信号。我在这里读过,要处理 a 中的事件QRunnable
,线程需要有自己的事件循环。所以我QEventLoop loop
把Run()
每个ComPort
. 现在readyRead()
被触发,我从每个端口接收数据一段时间,然后突然之间应用程序崩溃并出现分段错误:
c++ - 管理 Win32 应用程序和 QWinMigrate 之间的键盘事件
我已将 Qt 对话框集成到传统的 Win32 应用程序中,现在对于如何管理从 Qt->Win32 传播的键盘事件感到有些困惑。有什么方法可以测试 Qt 是否正在“处理”事件(例如,输入到编辑框),并防止这些事件传播到主机应用程序?
Win32 应用程序有自己的非常复杂的加速器系统,当使用原生编辑框时,我们通常手动禁用加速器。我没有能力为 Qt 对话框执行此操作,因为它是多个应用程序之间的共享小部件。
目前我禁用了整个对话框上的主机加速器以获得焦点,但是是否可以告诉 Qt 阻止来自编辑框的 kbd 事件传播?理想情况下不修改 QtDialogs 代码(虽然我可以在必要时这样做?)
qt - QEventLoop:获取安排事件的时间
是否可以获得将事件安排到 QEventLoop(例如QCoreApplication
事件循环)的时间?
我遇到了主事件循环暂停的情况。当它重新激活时,事件被触发,我对将事件添加到队列的时间感兴趣。这些事件不是自定义事件,而是系统(和其他)事件。
问候,
c++ - Qt QEventLoop CPU使用率达到最大值
每当我运行一段QEventLoop
时间等待线程完成后台工作时,即使线程在其函数中进行了大量等待并且没有进行密集计算,CPU 使用率也会上升到 100%。它是加载 CPU 的事件循环。有没有办法配置QEventLoop
运行更慢并节省 CPU?
这是一个例子:
qt - 共享库中的 QApplication 事件循环问题
我正在尝试QWebPage
在共享库中使用,这意味着我必须在其中获得一个 GUI 上下文才能运行它。我已经构建了我的代码来实现它QApplication
,但是一旦我运行qApp->exec()
事件循环完全阻止并阻止其他任何事情的执行。这是在 OS X 上运行的共享库,我还没有尝试任何其他平台。
我尝试添加一个QTimer
in 以每 100 毫秒触发一次,但它永远不会被调用,我假设事件循环阻塞。我在QApplication
下面添加了我的设置代码。我假设我要么需要在线程中运行它,要么我错过了一些微不足道的事情,但我完全不确定是什么。
web_lib.cpp
web_lib.h
主文件
c++ - 并行运行多个 QEventLoops(用于 QtNetwork)
我尝试扩展一个在 Ubuntu/Linux 桌面下运行并支持 Qt 网络的旧程序。与这些库进行 LAN 通信需要运行.exec()
QEventLoop 才能真正开始工作(即:接受连接、接收、发送等)
问题
问题是我不知道这个事件循环在主程序中的什么位置,而且因为我隐约知道它的设计,所以我更喜欢尽可能独立的解决方案。
我的点子
我已经检查过我不需要 main-QEventLoop,并且可以为网络(即嵌套)制作另一个。不幸的是,我不知道如何并行运行两个循环,因为我的程序在嵌套处停止.exec()
,因此主程序也停止了。
所以我的主要意图实际上是用 Qt-Networking 扩展主程序,我也对其他解决方案持开放态度。
c++ - QTimer::SingleShot 在对象被删除后触发
在这种情况下,在删除 a 并触发计时器后,它会执行timerSlot()
吗?我遇到了极其罕见的崩溃,不确定是否是因为这个逻辑中有问题。
c++ - 在没有单独的事件循环的情况下运行 QFileDialog::getOpenFileName?
我现在正在使用QFileDialog::getOpenFileName。但是,正如本文所建议的,当主应用程序在对话框打开时关闭时,这会崩溃。您可以在此处查看如何重现崩溃的示例:
我可以改用QFileDialog
普通的构造函数,如此处所述。但是,然后我似乎没有得到本机 Windows 文件打开对话框。
有没有办法获得一个非崩溃程序并通过 Qt 使用本机 Windows 文件打开对话框?
c++ - QUdpSocket 高速率消息读取
大家!
我在使用 QUdpSocket 和 readyRead 信号时遇到了一个奇怪的问题,我可以说它不像我想的那样工作,
我创建了一个 QUdpSocket 并将其绑定到某个端口,将 readyRead 信号连接到我的插槽,然后读取所有待处理的数据报,如下所示
和我的 readBuffers 代码
我认为使用 Qt::QueuedConnection 解决了我的问题,但今天我在我的项目中添加了另一个小部件,并每 100 毫秒更新一次。我不知道怎么回事,但我的插槽在 2 秒后不再发出信号。
如果我将定时器间隔或发送数据速率更改为 1 秒,一切都很好。
我所有的类和我的小部件都在主程序的线程中,我不使用另一个线程,但似乎我应该!
那么为什么 Qt 事件循环会丢弃信号呢?
我检查了我的套接字状态,它在 Bound 之后没有改变。
提前致谢
python - 与 QtCore.QEventLoop() 链接后无法单击 QRadioButton
几天前,我遇到了必须在 for 循环中选中/取消选中 QRadioButton 的情况。这是链接Waiting in for loop until QRadioButton get check every time?
在执行QEventLoop
此操作后,它一直运行良好,直到今天。现在我看到我的 QRadioButton(pass) 按钮允许我点击它,但不能点击第二个 QRadioButton(fail)。
Fail QRadioButton 既不会挂起也不会禁用,但只是我无法单击它。
我的 QEventLoop 代码是:
for循环中的代码是:
这个 radioExclusive 函数可以做到这一点:-
我不确定这个问题发生在什么时候?