【Qt】启动新窗口--C/S传输信息

创建新UI文件:界面文件右键单击--创建新文件

在这创建了chat.ui后自动创建chat.h(包含一个Chat类)&chat.cpp

在需要出现这个新界面的地方:

  • 创建Chat类对象【注意:在堆空间创建,局部变量在函数结束就析构了】
  • 展示界面

(这里是widget.cpp中连接connect处理槽函数lambda里加的)

cpp 复制代码
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用于传信息

默认参数只能放在后面,前面一个默认参数,后面都得是默认

cpp 复制代码
explicit Chat(QTcpSocket *s,QWidget *parent = nullptr);

并且包含一个socket指针

cpp 复制代码
 QTcpSocket *socket;

chat.cpp

写数据,将lineEdit中写入的东西存到ba中,然后写入socket

cpp 复制代码
void Chat::on_sentButton_clicked()
{
    QByteArray ba;
    ba.append(ui->lineEdit->text().toUtf8());
    socket->write(ba);
}

服务器

widget.h

槽函数中加处理接收客户端消息的函数

cpp 复制代码
void clientInfoSlot();//接收客户端消息

widget.cpp

服务器收到客户端发送的消息 ,socket发出readyReady信号

cpp 复制代码
    connect(socket,&QTcpSocket::readyRead,this,&Widget::clientInfoSlot);

clientInfoSlot的定义:

cpp 复制代码
void Widget::clientInfoSlot()
{
    //获取信号的发出者
    QTcpSocket*s = (QTcpSocket*)sender();
    ui->lineEdit->setText(QString(s->readAll()));
}
相关推荐
源代码•宸3 小时前
Qt6 学习——一个Qt桌面应用程序
开发语言·c++·经验分享·qt·学习·软件构建·windeployqt
寻找华年的锦瑟3 小时前
Qt-UDP
开发语言·qt·udp
有时间要学习3 小时前
Qt——系统相关
qt
橘颂TA3 小时前
【QSS】软件界面的美工操作——Qt 界面优化
开发语言·qt·c/c++·界面设计
Evand J3 小时前
【MATLAB例程】二维环境定位,GDOP和CRLB的计算,锚点数=4的情况(附代码下载链接)
开发语言·matlab·定位·toa·crlb·gdop
郝学胜-神的一滴4 小时前
使用现代C++构建高效日志系统的分步指南
服务器·开发语言·c++·程序人生·个人开发
你不是我我4 小时前
【Java 开发日记】我们来讲一讲阻塞队列及其应用
java·开发语言
互联网中的一颗神经元4 小时前
小白python入门 - 9. Python 列表2 ——从基础操作到高级应用
java·开发语言·python
wjs20244 小时前
PHP 表单:深入浅出地掌握表单处理
开发语言