当前位置: 首页 > article >正文

QT的错误记录:同文件的的两个QThread子类信号槽关联

珍贵的记录

原本很简单的一个小测试代码,我原来把两个QThread子类放在一个文件里:结果报错

-1: error: ld.lld: error: undefined symbol: vtable for RecvThread

:-1: error: ld.lld: error: undefined symbol: vtable for SendThread 

也没搞明白为什么,分开存放就OK了,先记录一下

一文不值的代码 

RecvThread.h

#ifndef RECVTHREAD_H
#define RECVTHREAD_H
#include <QObject>
#include <QThread>
#include <QDebug>

class RecvThread : public QThread
{
    Q_OBJECT
public:
    void run() override {
        qDebug() << "RecvThread start";
        QThread::sleep(3);
        qDebug() << "RecvThread exit";
    }

public slots:
    void recv_msg(QString str) {
        qDebug() << "Setting string in OutputThread:" << str;
    }
};
#endif // RECVTHREAD_H

 SendThread.h

#ifndef SENDTHREAD_H
#define SENDTHREAD_H
#include <QObject>
#include <QThread>
#include <QDebug>

class SendThread : public QThread
{
    Q_OBJECT
public:
    void run() override {
        qDebug() << "SendThread start";
        QString s("hello friend");
        emit send_msg(s);
        QThread::sleep(1);
        qDebug() << "SendThread exit";
    }
signals:
    void send_msg(QString str);
};
#endif // SENDTHREAD_H

 main.cpp

#include <QApplication>
#include <QThread>
#include <QDebug>
#include <QString>
#include "SendThread.h"
#include "RecvThread.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    SendThread send_thread;
    RecvThread recv_thread;

    QObject::connect(&send_thread, SIGNAL(send_msg(QString)), &recv_thread, SLOT(recv_msg(QString)));
    qDebug() << "connect finish";
    emit send_thread.send_msg("hello one");

    send_thread.start();
    recv_thread.start();

    send_thread.wait();
    recv_thread.wait();

    return a.exec();
}

测试结果:

小结 


http://www.kler.cn/a/451600.html

相关文章:

  • TLDR:终端命令的简洁百科全书
  • 【软考高级】系统架构设计师复习笔记-精华版
  • 如何在谷歌浏览器中进行网络速度测试
  • GPT人工智能在医疗文档中的应用
  • 【Python】基础语法介绍
  • Naive UI 多选框自定义tag和label
  • MySQL for update skip locked 与 for update nowait
  • vue前端编译报错解决方法
  • 007-spring-bean的相关配置(重要)
  • 2025人工智能与教育科学国际会议(AIES 2025)
  • stm32硬件iic
  • Java中classpath的基本概念和配置方法
  • 【C#】可以点击单行文本的Popup控件
  • 如何使用Python调用SD模型进行文生图
  • 仓颉编程语言深入教程:基础概念和数据类型
  • [SZ901]FPGA程序固化工具使用方法
  • 国产之光--仓颉编程语言的实战案例分析
  • ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)
  • 惠普HP proliant DL380 G6服务器使用
  • 【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
  • 派克汉尼汾推出新的快换接头产品系列,扩展热管理解决方案
  • windows调整鼠标速度
  • Three.js 顶点着色学习
  • 自动化测试工具Ranorex Studio(七十一)-一般故障排除
  • Vue 3.5 编写 ref 时,自动插入.Value
  • 第五篇:前后端如何“扯皮”——HTTP 在开发中的应用