QT中点击一个按钮把一个参数的值传递到另一个线程中

QT中点击一个按钮把文本栏的IP地址传递到另一个线程中,并完成对数值的更改赋值。或直接传递一个标志位,数据我提前进行写死操作完成对数据的传输。我想用信号与槽机制,但设计到不同线程之间转换,要传递过去的函数已经写好了,新建一个槽函数会让线程不好运行。


// 发送ARP报文
void ArpSendThread::run()
{
    if( this->mAdapterHandle == nullptr){
        qDebug() << "网卡设备没有开启";
        return;
    }
    char tmp[18] = {0};
    Utils::macToHexString(this->mMacAddr,tmp);//hex形式的mac
    qDebug() <<"begin:" << tmp;

    // 构造ARP请求包 ,2字节及以上的 存在大小端对齐问题,需要转换为网络字节序
    ArpPackage package;

    // 以太网 头部
    uint64_t ethBroadcastAddr = 0xffffffffffff;// 6字节 以太网 广播地址,局域网主机无条件接受
    memcpy(package.ethHead.destEthAddr,&ethBroadcastAddr,6);
    memcpy(package.ethHead.srcEthAddr,this->mMacAddr,6);
    package.ethHead.frameType = htons(0x0806);

    memset(tmp,0,18);
    Utils::macToHexString(this->mMacAddr,tmp);
    qDebug() <<"origin:" << tmp;//起始的mac

    memset(tmp,0,18);
    Utils::macToHexString(package.ethHead.srcEthAddr,tmp);
    qDebug() <<"now:" << tmp;

    // 构造ARP请求体内容
    package.arpBody.hardType = htons(1);// 以太网类型
    package.arpBody.protocolType = htons(0x0800); // IP地址
    package.arpBody.hardLen = 6;
    package.arpBody.protocolLen = 4;//IP地址长度
    package.arpBody.op = htons(1);//1是请求;2是应答

    memcpy(package.arpBody.srcEthAddr,this->mMacAddr,6);
    // 硬件厂商 Mac地址 http://standards-oui.ieee.org/oui/oui.txt
    Utils::htonN(reinterpret_cast<uint8_t*>(&(this->mCurIPAddr)),package.arpBody.srcIpAddr,4);
    memset(package.arpBody.destEthAddr,0,6);
    //设置padd++++++++++
    if(uipflag != 1){
    memset(package.arpBody.padd,1,10);
    package.arpBody.padd[0] = 'X';
    package.arpBody.padd[1] = 'J';
    package.arpBody.padd[2] = 'X';
    package.arpBody.padd[3] = 'Y';
    }
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/784308709486123.PNG "#left")

没看懂,直接发过去不就完事了么