qt聊天界面的实现
通过tcpip协议进行网络通信,通过qt框架进行搭建,有两个部分,客户端和服务器端,这里的qt设计是通过ui直接绘图(试了一下直接cpp,对于布局要求太高了)
首先要下载qtcreator
创建服务器端
首先进行新建工程
*
- 然后点击上面那个new project
- 这里一定要点denerate form
然后工程就创建完成了
设计界面
- 在左面分别选取textedit两个,buttons两个,还有一个弹簧,放置在界面中
- 然后点击左上角的
就设计好了,上面的聊天框用于显示接收的信息,下面用于自己发信息,两个按钮分别是关闭和发送
然后对每个对象进行分别命名和其对应属性的改写
编写源码和头文件
改写工程文件
- 点开项目文件,在最后加上一个
QT += core gui network
改写头文件
- 先添加对应套接字的头文件
- 然后创建两个指针,指针的话要动态分配空间
改写源代码
- 点开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();
}