qt5簡易聊天室

loginindexwindow.h

#ifndef LOGININDEXWINDOW_H
#define LOGININDEXWINDOW_H

#include "studentmangeutils.h"

#include "stuclient.h"
#include "stuserver.h"
#include <QCheckBox>
#include <QComboBox>
#include <QMainWindow>
#include <QWidget>
class LoginIndexWindow : public StudentMangeUtils {

public:
  QVBoxLayout *vbox;
  QLineEdit *userNameEdit, *userPwdEdit;
  QCheckBox *savePwd, *autoLogin;
  QPushButton *loginButton, *exitButton;
  QLabel *userName, *userPwd, *savePwdLabel, *autoLoginLabel;
  QMainWindow *m;
  QWidget *ww;
  QComboBox *comboBox;

public:
  bool isServer();
  bool login(QString username, QString userpwd);
  void addWidget(QWidget *w1, QWidget *w2, QWidget *w3, QWidget *w4);
  void addWidget(QWidget *w1, QWidget *w2);
  void setFont(QList<QWidget *> widget, int h);
  void connectFun();
  void init();
  bool check();
  void showLayout();

public:
  LoginIndexWindow();
  LoginIndexWindow(QMainWindow *m);
};

#endif // LOGININDEXWINDOW_H

stulayout.h

#ifndef STULAYOUT_H
#define STULAYOUT_H

#include "studentmangecommondline.h"
#include "studentmangeinfo.h"
#include "studentmangeutils.h"
#include <QDateTime>
#include <QFileDialog>
#include <QKeyEvent>
#include <QListView>
#include <QListWidget>
#include <QListWidgetItem>
#include <QScrollBar>
#include <QStandardItemModel>
#include <QString>
#include <QTcpServer>
#include <QTcpSocket>
#include <QTimer>

/*

ClientTextEdit : 服務/客戶端用戶編輯消息控件
startServer :
            在當前設置爲服務端時,此控件擔任啓動服務端功能
            在當前設置爲客戶端時,此控件擔任重啓客戶端功能
startClient :
            在當前設置爲客戶端時,此控件擔任啓動客戶端功能
            在當前設置爲服務端時,此控件擔任重啓服務端功能
sendMsg : 服務/客戶端用戶發送消息控件

showContactList : 顯示在線人員控件

FileTransfer : 文件選擇控件

ImageTransfer : 圖片文件選擇控件

tcpSocketMap : 用於保存StudentMangeInfo對象

tcpList : 用於存放連接過的QTcpSocket客戶端


*/

class stuLayout : public StudentMangeUtils {
private:
  QPlainTextEdit *ClientTextEdit;
  QPushButton *startServer, *sendMsg, *showContactList, *startClient,
      *FileTransfer, *ImageTransfer;
  QWidget *w;
  QVBoxLayout *vbox;
  QTcpServer *tcpServer;
  QTcpSocket *tcpSocket;
  QMap<int, StudentMangeInfo> tcpSocketMap;
  QLineEdit *ipEdit, *portEdit;
  QLabel *ipLabel, *portLabel;
  QList<QTcpSocket *> tcpList;
  QList<QTimer *> timerList;
  QTreeWidget *treeWidget;
  QTreeWidgetItem *item1;
  StudentMangeCommondLine *studentMangeCommondLine;
  QListWidget *listWidget;

private:
  QByteArray fileByte;
  QString clientDataMsg;
  QString clientIP;
  QString userName = "admin";
  QString serverIp = "127.0.0.1";
  int clientPort = 53665;
  int clickState = 0;
  int serverPort = 53665;
  int connCount = 0;
  int selectServer = 0;
  int oldLen = 0;
  int clickShowClient = 0;
  int sendFile = 0;

public:
  void sendMsgOnNowClient(QByteArray msg);
  void showClientList();
  QString getClientData(QTcpSocket *tcpSocket);
  QString getClientData();
  void clientDiscon(QTcpSocket *tcpSocket);
  void tcpScoketConnectFun(QTcpSocket *tcpSocket);
  void discon();
  void initServer();
  void initClient();
  void sendMSGForClient(QByteArray msg);
  void init();
  void showLayout();
  void connFun();
  void closeServer();
  void closeClient();
  void disableButton();
  void enableButton();
  void timerDiscon();
  QString getCurrentTime();

public:
  stuLayout();
  ~stuLayout();
  int getSelectServer() const;
  void setSelectServer(int value);
  QString getServerIp() const;
  void setServerIp(const QString &value);
  int getServerPort() const;
  void setServerPort(int value);
  int getClickState() const;
  void setClickState(int value);
};

#endif // STULAYOUT_H

廢話不多說,看圖
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
完整下載資源連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章