嵌入式-基于qt的tcp/ip实现

qt聊天界面的实现

通过tcpip协议进行网络通信,通过qt框架进行搭建,有两个部分,客户端和服务器端,这里的qt设计是通过ui直接绘图(试了一下直接cpp,对于布局要求太高了)

首先要下载qtcreator

创建服务器端

首先进行新建工程

嵌入式-基于qt的tcp/ip实现
*

  • 然后点击上面那个new project
  • 嵌入式-基于qt的tcp/ip实现
  • 这里一定要点denerate form
    嵌入式-基于qt的tcp/ip实现
    然后工程就创建完成了

设计界面

嵌入式-基于qt的tcp/ip实现

  • 在左面分别选取textedit两个,buttons两个,还有一个弹簧,放置在界面中
  • 嵌入式-基于qt的tcp/ip实现
  • 然后点击左上角的嵌入式-基于qt的tcp/ip实现

就设计好了,上面的聊天框用于显示接收的信息,下面用于自己发信息,两个按钮分别是关闭和发送

然后对每个对象进行分别命名和其对应属性的改写
嵌入式-基于qt的tcp/ip实现

编写源码和头文件

改写工程文件

嵌入式-基于qt的tcp/ip实现

  • 点开项目文件,在最后加上一个

QT += core gui network

改写头文件

  • 先添加对应套接字的头文件
  • 然后创建两个指针,指针的话要动态分配空间
    嵌入式-基于qt的tcp/ip实现

改写源代码

  • 点开widget
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //监听套接字,指定父对象自动回收空间,自动回收空间
    tcpSer = new QTcpServer(this);
    //对应的ip和端口
    tcpSer->listen(QHostAddress::Any,8888);
    //用lamda表达式
    connect(tcpSer,&QTcpServer::newConnection,
            [=]()
            {
                tcpsoc = tcpSer->nextPendingConnection();
                QString ip = tcpsoc->peerAddress().toString();
                qint16 port = tcpsoc->peerPort();\
                QString temp = QString("[]:成功链接").arg(ip).arg(port);
                ui->read->setText(temp);
            }
            );
    //通信套接字
    tcpsoc = new QTcpSocket(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    //获取链接内容然后发送
    QString str = ui->write->toPlainText();
    tcpsoc->write(str.toUtf8().data());
}

void Widget::on_send_clicked()
{
    close();
}
上一篇:flutter闪屏过渡动画,闪光占位动画


下一篇:关于Flutter文本组件Widget的全面解读,吊打面试官系列!