qthread相关内容
我不是多线程专家.我知道 GUI 应该由主线程管理,但是我需要主线程同时完成两件事.情况如下: 用户点击按钮(自拍),倒计时开始(3 秒).用户可以在 QLabel 中看到每秒变化的数字 3-2.同时用户可以在同一个窗口的另一个 QLabel 中看到摄像头数据. 换句话说,主线程应该做两件事: 更新 QLabel1 以始终显示计时器 使用来自相机的实时视频流更新 QLabel2
..
我的 MainWindow 类中有一个复杂的函数,它会定期运行查询并更改小部件的属性和数据.由于在主线程上可能需要很长时间,因此 GUI 可能会冻结. 所以我在另一个线程上创建了一个 GUIUpdater 类来执行周期性操作.我基于这里的解决方案,它展示了如何从另一个线程更新 QLabel: Qt - 用第二个线程更新主窗口 但该解决方案需要定义连接.具有多个widget的复杂功
..
我正在构建一个 Qt GUI 应用程序,它使用 QThread/QObject 组合充当在主线程之外执行任务的工作线程. 通过moveToThread,QObject 被移动到QThread 中.这样,我的工作人员可以拥有在事件循环中处理的信号(它是一个 QObject)和插槽(由 QThread 提供). 现在我想让工作程序以一种特殊的方式运行,以便在事件循环中的插槽遇到 Pytho
..
我正在尝试创建一个应该在后台运行的新线程 gpsthread,并存储该值. class gpsthread: public QThread{Q_OBJECT私人:nrega_status_t status2;上市:显式 gpsthread(QObject *parent = 0):QThread(parent) {//QTimer *t = new QTimer(this);//connect(
..
我有一个类,它是某种设备的抽象. class Device{上市:...无效开始();无效停止();void MsgLoop();信号:无效 sMsgArrived();} Start() 和Stop() 是从GUI 线程调用的.Start() 开始运行 MsgLoop() 的新线程.它看起来像这样: void MsgLoop(){永远 {if(SUCCESS == ReadMsg())//
..
我在执行以下 gui 时遇到问题.如果没有 msgbox,它可以正常工作,但是当有一个 mesbox 时它会阻塞.知道为什么 gui 在有消息时会阻塞.谢谢 from PyQt5 import QtCore, QtGui, QtWidgets进口螺纹导入时间类 Ui_MainWindow(对象):def setupUi(self, MainWindow):MainWindow.setObject
..
我正在设计一个带有 PyQt 的 GUI,当我点击一个按钮时,我需要显示一个 matplotlib/pylab 窗口,该按钮从我创建的函数中绘制数据.它就像在 Matlab 中使用的运行时.每次按下该按钮时,我都希望将 matplotlib/pylab 窗口保留为我的窗口. 解决方案 这是一个基本示例,它将使用 QThread 绘制三个不同的样本: #!/usr/bin/env pyth
..
我真的很难理解如何在 PyQt 中使用线程.我做了一个简单的示例,说明我想在用户界面中执行的操作.在下面的代码中,我希望用户输入一个股票行情自动收录器(例如,您可以输入"bby","goog"或"v")并绘制特定时期内的股票价值.问题是在更复杂的Ui中,或者是长时间的UI冻结,而绘图正在更新.因此,我制作了一个“绘图仪"类,以在接收到特定信号时更新绘图(覆盖Qthread.run显然不是正确的方法
..
我制作了一个从 QAbstractListModel 派生的类,并重新实现了所有必需的功能.我创建了一个对象,将一些初始数据填充到模型中(所有beginInsertRows等都完成了),然后通过 setContextProperty 将其(对象)传递给qml.我正在使用 QQuickView .通过 show()命令显示qml后,将生成一个 QThread ,其中将使用Model对象的指针.该线程
..
我使用PyQt线程通过ffmpeg将mp3文件并行转换为aac.这是我的代码: class SubprocessThread(QThread):信号= pyqtSignal('PyQt_PyObject')def __init __(self,command,args):QThread .__ init __()self.command =命令self.args = argsdef __del
..
我使用了两个QGLWidgets.一种用于加载纹理,另一种用于渲染,但不起作用. 我使用了以下解释 http://blog.qt.digia.com/blog/2011/06/03/threaded-opengl-in-4-8/ 纹理上传线程上载许多(或大)纹理通常是一项昂贵的操作,因为要推送到GPU的数据量很大.同样,这是可能不必要地阻塞您的主线程的那些操作之一.在4.8中,您可以通
..
我有一个使用一个工作线程的简单应用程序.启动此工作线程并初始化DownloadManager,该DownloadManager负责从网上下载文件.在我的主应用程序类中,在DownloadManager完成之前发出的线程上具有finish()信号. 我的问题是如何使工作线程一直等到DownloadManager完成工作. 这是示例代码: 类Main{m_DownloadWorker =
..
我需要立即开始并从Qml File中停止QThread扩展类.有什么解决办法吗?这是我的课: class SerialManager:公共QThread{Q_OBJECT上市:CircularListbuffer_ [2];信号:void dataReady(short * value,int len,unsigned short sample);受保护的:无效
..
在main()即主线程中创建了一个QThread.将工作程序类移至新线程.该线程执行工作程序类的"StartThread"方法. 工作线程: //头文件类Worker:公共QObject{Q_OBJECT上市:Worker(QThread *线程);公共插槽:void StartThread();void EndThread();私人的:QThread * m_pCurrentThread
..
我正在使用串行设备.QSerialPort在单独的线程中.线程是通过以下方式创建的: QThread * serialthread =新的QThread;序列*序列=新的Serial();serial-> moveToThread(serialthread); 当数据可用时,将在我的线程工作程序中发出此信号: void Serial :: process(){serialport =新
..
我想在另一个启动时启动一个QThread,但是它不起作用. main.cpp代码段 Worker stat_worker;stat_worker.moveToThread(stat_worker.stat_thread);工人一些;some.moveToThread(some.somethread);QObject :: connect(stat_worker.stat_thread,S
..
我有一个Worker对象,并使用其方法moveToThread将其放入线程中. 现在我调用它的work方法: 如果我直接调用该方法,它将在其对象所在的线程中执行 如果我使用lambda调用该方法,则该方法在主线程中执行 示例: from PySide.QtCore import * from PySide.QtGui import * import sys class
..
基本上,我需要在Java中执行相同的操作: SwingUtilities.invokeLater(()->{/* function */}); 或者在javascript中这样: setTimeout(()=>{/* function */}, 0); 但是使用Qt和lambda.所以是一些伪代码: Qt::queuePushMagic([]() { /* functio
..
QThreads和QRunnable有什么区别? 何时应使用QThread和QRunnable? 解决方案 QRunnable 类和 QtConcurrent :: run()函数是非常适合我们想要在一个或多个 辅助线程中执行某些后台处理而无需 QThread提供的全部功能和灵活性的情况。 摘自Mark Summerfield的“ 高级Qt编程:使用C ++和Qt 4创建出
..
假设我们在 QObject 派生类中编写了一个非常量方法: class MyClass:public QObject { int x; public: 无效方法(int a){ x = a; //和其他可能的东西 }; }; 我们要使该方法成为线程安全的:这意味着可以从任意线程以及从 Qt提供了哪些机制/ API来帮助我们使该方法成为线程-
..