问题标签 [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.

0 投票
0 回答
764 浏览

c++ - 在 QRunnable 中调用 QEventLoop(连接多个设备)

我有一个 QthreadPool 可以同时连接多达 5 个串行设备。每个串行设备定义为:

在 GUI 中,单击按钮后,我调用串行设备管理器serialManager->startAcquisition(portNames),如下所示:

连接设备后,我会轮询设备。调用停止函数时线程终止。我希望readyRead()正在发出信号,以便填充sensor->portData

问题定义: 没有readyRead()发出信号。我在这里读过,要处理 a 中的事件QRunnable,线程需要有自己的事件循环。所以我QEventLoop loopRun()每个ComPort. 现在readyRead()被触发,我从每个端口接收数据一段时间,然后突然之间应用程序崩溃并出现分段错误:

0 投票
2 回答
308 浏览

c++ - 管理 Win32 应用程序和 QWinMigrate 之间的键盘事件

我已将 Qt 对话框集成到传统的 Win32 应用程序中,现在对于如何管理从 Qt->Win32 传播的键盘事件感到有些困惑。有什么方法可以测试 Qt 是否正在“处理”事件(例如,输入到编辑框),并防止这些事件传播到主机应用程序?

Win32 应用程序有自己的非常复杂的加速器系统,当使用原生编辑框时,我们通常手动禁用加速器。我没有能力为 Qt 对话框执行此操作,因为它是多个应用程序之间的共享小部件。

目前我禁用了整个对话框上的主机加速器以获得焦点,但是是否可以告诉 Qt 阻止来自编辑框的 kbd 事件传播?理想情况下不修改 QtDialogs 代码(虽然我可以在必要时这样做?)

0 投票
1 回答
284 浏览

qt - QEventLoop:获取安排事件的时间

是否可以获得将事件安排到 QEventLoop(例如QCoreApplication事件循环)的时间?

我遇到了主事件循环暂停的情况。当它重新激活时,事件被触发,我对将事件添加到队列的时间感兴趣。这些事件不是自定义事件,而是系统(和其他)事件。

问候,

0 投票
0 回答
710 浏览

c++ - Qt QEventLoop CPU使用率达到最大值

每当我运行一段QEventLoop时间等待线程完成后台工作时,即使线程在其函数中进行了大量等待并且没有进行密集计算,CPU 使用率也会上升到 100%。它是加载 CPU 的事件循环。有没有办法配置QEventLoop运行更慢并节省 CPU?

这是一个例子:

0 投票
3 回答
854 浏览

qt - 共享库中的 QApplication 事件循环问题

我正在尝试QWebPage在共享库中使用,这意味着我必须在其中获得一个 GUI 上下文才能运行它。我已经构建了我的代码来实现它QApplication,但是一旦我运行qApp->exec()事件循环完全阻止并阻止其他任何事情的执行。这是在 OS X 上运行的共享库,我还没有尝试任何其他平台。

我尝试添加一个QTimerin 以每 100 毫秒触发一次,但它永远不会被调用,我假设事件循环阻塞。我在QApplication下面添加了我的设置代码。我假设我要么需要在线程中运行它,要么我错过了一些微不足道的事情,但我完全不确定是什么。

web_lib.cpp

web_lib.h

主文件

0 投票
2 回答
1163 浏览

c++ - 并行运行多个 QEventLoops(用于 QtNetwork)

我尝试扩展一个在 Ubuntu/Linux 桌面下运行并支持 Qt 网络的旧程序。与这些库进行 LAN 通信需要运行.exec()QEventLoop 才能真正开始工作(即:接受连接、接收、发送等)

问题

问题是我不知道这个事件循环在主程序中的什么位置,而且因为我隐约知道它的设计,所以我更喜欢尽可能独立的解决方案。

我的点子

我已经检查过我不需要 main-QEventLoop,并且可以为网络(即嵌套)制作另一个。不幸的是,我不知道如何并行运行两个循环,因为我的程序在嵌套处停止.exec(),因此主程序也停止了。

所以我的主要意图实际上是用 Qt-Networking 扩展主程序,我也对其他解决方案持开放态度。

0 投票
5 回答
2771 浏览

c++ - QTimer::SingleShot 在对象被删除后触发

在这种情况下,在删除 a 并触发计时器后,它会执行timerSlot()吗?我遇到了极其罕见的崩溃,不确定是否是因为这个逻辑中有问题。

0 投票
2 回答
872 浏览

c++ - 在没有单独的事件循环的情况下运行 QFileDialog::getOpenFileName?

我现在正在使用QFileDialog::getOpenFileName。但是,正如本文所建议的,当主应用程序在对话框打开时关闭时,这会崩溃。您可以在此处查看如何重现崩溃的示例:

我可以改用QFileDialog普通的构造函数,如此所述。但是,然后我似乎没有得到本机 Windows 文件打开对话框。

有没有办法获得一个非崩溃程序并通过 Qt 使用本机 Windows 文件打开对话框?

0 投票
1 回答
889 浏览

c++ - QUdpSocket 高速率消息读取

大家!

我在使用 QUdpSocket 和 readyRead 信号时遇到了一个奇怪的问题,我可以说它不像我想的那样工作,

我创建了一个 QUdpSocket 并将其绑定到某个端口,将 readyRead 信号连接到我的插槽,然后读取所有待处理的数据报,如下所示

和我的 readBuffers 代码

我认为使用 Qt::QueuedConnection 解决了我的问题,但今天我在我的项目中添加了另一个小部件,并每 100 毫秒更新一次。我不知道怎么回事,但我的插槽在 2 秒后不再发出信号。

如果我将定时器间隔或发送数据速率更改为 1 秒,一切都很好。

我所有的类和我的小部件都在主程序的线程中,我不使用另一个线程,但似乎我应该!

那么为什么 Qt 事件循环会丢弃信号呢?

我检查了我的套接字状态,它在 Bound 之后没有改变。

提前致谢

0 投票
1 回答
61 浏览

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 函数可以做到这一点:-

我不确定这个问题发生在什么时候?