想着练习一下QT,做一个简单的小程序。
突然就想到做一个聊天工具,这个实现起来很简单,没有复杂的关系。
主要实现客户端和服务器简单交互,可以发送字母、数字、汉字。
界面设计比较简单,后续再有功能再作更新。
写了一个简单的登录界面,用户名和密码是死的,因为没有添加数据库。
主要实现是server创建socket对象后,一直处于监听状态,等待客户端的连接请求,
连接成功后,实现简易的数据读写,(先启动server哦!)
登录界面如下:mainwindows
聊天界面如下:mainwin_1
整体界面简单,稍微看一下代码就能明白!
server端的代码:
mainwin_1.h + mainwindows.h:
//mainwindows.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <mainwin_1.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
MainWin_1 *mainwin; //UI of chat
~MainWindow();
private slots:
void on_pushButton_clicked();//login
void on_pushButton_2_clicked();//cancel
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
// mainwin_1.h--------------------------------------------------------
#ifndef MAINWIN_1_H
#define MAINWIN_1_H
#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>
namespace Ui {
class MainWin_1;
}
class MainWin_1 : public QMainWindow
{
Q_OBJECT
public:
explicit MainWin_1(QWidget *parent = 0);
~MainWin_1();
private slots:
void on_pushButton_clicked(); //listen in client, send the news
void server_NEW_Connect(); //accept the client signal and connect
void socket_Read_Data(); //read the client news
void socket_Disconnect(); //disconnect
private:
void my_connect();
private:
Ui::MainWin_1 *ui;
QTcpServer *server; //create server object
QTcpSocket *socket; //create clirnt object
};
#endif // MAINWIN_1_H
main.cpp + mainwin_1.cpp + mainwindows.cpp:
//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "QTextCodec"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWin