QT 子线程如何没隔50ms给主线程发送一个数据
时间: 2024-03-02 12:51:37 浏览: 109
Qt线程和主线程传递数据
可以使用 QTimer 定时器来实现子线程发送数据给主线程。
在子线程中创建 QTimer 定时器对象,然后设置定时器的时间间隔为 50ms,并将定时器的信号与主线程的槽函数连接。在定时器的槽函数中,调用主线程的信号与槽函数来发送数据。
以下是一个示例代码:
```cpp
// 子线程中的代码
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MyThread::sendDataToMainThread);
timer->start(50);
void MyThread::sendDataToMainThread()
{
emit sendData("Data from sub thread");
}
```
在主线程中,需要在构造函数中将子线程中的信号与槽函数连接起来,以接收来自子线程的数据。
```cpp
// 主线程中的代码
MyThread *thread = new MyThread(this);
connect(thread, &MyThread::sendData, this, &MainWindow::receiveDataFromSubThread);
void MainWindow::receiveDataFromSubThread(QString data)
{
qDebug() << "Received data from sub thread: " << data;
}
```
这样,子线程每隔 50ms 就会向主线程发送一次数据。主线程通过连接子线程的信号与槽函数来接收数据。
阅读全文