QT如何将一个函数执行到指定的线程中,具体代码
时间: 2023-05-22 13:03:55 浏览: 1125
您可以使用 `QMetaObject::invokeMethod()` 函数来将一个函数执行到指定的线程中。这可以通过指定连接类型和线程 ID 来完成。具体代码可以如下:
在 Sender(发件人)线程上的代码:
```c++
QThread* receiverThread; // 接收者线程指针
...
// 函数的执行将在 receiverThread 线程中进行
QMetaObject::invokeMethod(
receiverObject, // 接收者对象指针
"receiverMethod", // 接收者方法名
Qt::QueuedConnection, // 连接类型,使用 Qt::QueuedConnection 实现线程跨线程调用
Q_ARG(int, param1), // 后续参数,这里使用了一个整数类型参数
Q_ARG(QString, param2) // 后续参数,这里使用了一个字符串类型参数
);
```
在 Receiver(收件人)线程上的代码:
```c++
class ReceiverObject : public QObject {
Q_OBJECT
public:
explicit ReceiverObject(QObject* parent = nullptr);
public slots:
void receiverMethod(int param1, const QString& param2);
};
...
ReceiverObject::ReceiverObject(QObject* parent) : QObject(parent) {}
void ReceiverObject::receiverMethod(int param1, const QString& param2) {
// 在此处进行函数的执行
}
```
希望这样的回答可以帮助到您。
阅读全文