【Qt】启动新窗口--C/S传输信息
创建新UI文件:界面文件右键单击--创建新文件
在这创建了chat.ui后自动创建chat.h(包含一个Chat类)&chat.cpp

在需要出现这个新界面的地方:
- 创建Chat类对象【注意:在堆空间创建,局部变量在函数结束就析构了】
- 展示界面
(这里是widget.cpp中连接connect处理槽函数lambda里加的)
this->hide();//隐藏当前界面
//启动新界面
Chat *c = new Chat(socket);
c->show();
传输信息
接着上次的系统做传输信息:

https://blog.csdn.net/l203018/article/details/153751450?fromshare=blogdetail&sharetype=blogdetail&sharerId=153751450&sharerefer=PC&sharesource=L203018&sharefrom=from_link
客户端
首先在widget.h和widget.cpp中包含chat.h
widget.cpp的连接connect槽函数中包含创建新界面的代码。
因为要传输数据,可以将数据写到socket中new Char(socket)
chat.h
在Chat的声明中加入socket用于传信息
默认参数只能放在后面,前面一个默认参数,后面都得是默认
explicit Chat(QTcpSocket *s,QWidget *parent = nullptr);
并且包含一个socket指针
QTcpSocket *socket;
chat.cpp
写数据,将lineEdit中写入的东西存到ba中,然后写入socket
void Chat::on_sentButton_clicked()
{QByteArray ba;ba.append(ui->lineEdit->text().toUtf8());socket->write(ba);
}
服务器
widget.h
槽函数中加处理接收客户端消息的函数
void clientInfoSlot();//接收客户端消息
widget.cpp
服务器收到客户端发送的消息,socket发出readyReady信号
connect(socket,&QTcpSocket::readyRead,this,&Widget::clientInfoSlot);
clientInfoSlot的定义:
void Widget::clientInfoSlot()
{//获取信号的发出者QTcpSocket*s = (QTcpSocket*)sender();ui->lineEdit->setText(QString(s->readAll()));
}
