在单独的线程 Qt 中渲染屏幕外小部件
Render off screen widget in a separate thread Qt
我正在开发的应用程序由许多通过消息(0mq
)通信在一起的C线程组成。其中一个线程正在处理显示,并且应该在屏幕外呈现一个小部件,以便将其"屏幕截图"传达给应用程序的其他线程。
问题是,为了绘制一个小部件,您需要将其放置在QApplication
中并调用QApplication
的exec()
方法,这本质上是一个循环。所以我的线程完全卡住了,无法再与外界通信,因为它在 exec() 方法中。
有没有办法在单独的线程中启动 QApplication 并与之通信,这样我的显示线程就不会卡住?或者至少有一种方法可以做我想用Qt做的事情?
多谢!
编辑:此应用程序最终将成为Qt嵌入式应用程序
更新基本上,我的问题是:如何在与我的 C 代码不同的线程中启动 QApplication 并与之通信?
我最终为 QApplication 主事件循环 (exec()) 创建了一个单独的线程,并使用 0mq 套接字与应用程序的其余部分进行通信。
我不明白你说的"画一个小部件"是什么意思。但请注意:QWidget是GUI的一部分,GUI部分应该只由Main(UI)线程接触。这是你无法改变的规则。此外,QApplication仅在主线程上运行,因为QApplication是GUI本身的主要部分。您可以使用全局qApp
对象(需要为其包含 QApplication)和sendEvent()
或postEvent()
方法将消息发布到 QAppplication。
此外,我建议您使用您拥有的任何数据生成 QImage,并通过上述事件机制将其传播到您需要的小部件。但是,显然,我不知道你真正需要什么。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 最大和最小 1 C++函数
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 在屏幕上移动矩形时滞后/小卡顿
- TouchGFX小部件在空屏幕上可见
- Qt,openGL,小部件和屏幕外渲染
- 在屏幕上的确切位置保存和恢复Qt小部件
- C++ 创建小部件数组
- 在单独的线程 Qt 中渲染屏幕外小部件
- OSX以最小的延迟将像素推到屏幕上