我的这个程序是这样的服务器端要产生随机数,把产生的随机数写到文件中,把文件发送给客户端,服务器需要多线程来完成,因为要一边产生随机数到内存上,写到文件中,一边把内存上的内容发送给客户端。现在的问题是在服务器上点击发送数据的时候出现错误,这样的错误QObject: Cannot create children for a parent that is in a different thread.
下面是我的代码
这是线程的.h文件代码
这是线程.cpp文件的代码
这是主程序.h的代码
这是主程序.cpp的代码
#include "mywindow.h"
#include "ui_mywindow.h"
//int *p=new int[1024*1024];
//char arr[1024*1024];
mywindow::mywindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::mywindow)
{
ui->setupUi(this);
tcpserver = new QTcpServer;
// tcpsocket = new QTcpSocket;
tcpserver->listen(QHostAddress::Any,8899);
connect(tcpserver,SIGNAL(newConnection()),this,SLOT(myslot_connect()));
}
mywindow::~mywindow()
{
delete ui;
}
void mywindow::myslot_connect()
{
ui->textEdit->append("客户端连接成功");
tcpsocket=tcpserver->nextPendingConnection();
}
void mywindow::on_pushButton_clicked()//产生数据的槽函数
{
int i;
QString s;
srand((int)time(0));
for(i=0;i<1024*30;i++)
{
arr[i]=rand();
s +=QString::number(arr[i]);
QFile file("D:/server.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)){
//打开失败就结束
return;
}
QTextStream out(&file);
out << s; //往文件中写内容
memset(arr,0,sizeof(arr));
QApplication::processEvents();
}
}
void mywindow::on_pushButton_2_clicked()//发送数据的槽函数
{
thread = new HDThread(this);
thread -> start();
}
错误为
求