Qt creator多人聊天室

本文档介绍了如何使用Qt Creator开发一个支持最多20人的聊天室应用,包括客户端和服务器的实现。客户端部分涵盖.h头文件和.cpp源代码,服务器部分同样包含相应的头文件和源代码,具备断开连接、聊天和查看历史记录的功能。
摘要由CSDN通过智能技术生成

 用Qt creator写一个多人聊天室,人数最大限制为20人(这里看自己需求)。实现连接断开,聊天及查看历史记录功能

客户端:

 .h头文件

#ifndef DIALOG_H
#define DIALOG_H

#include <QtWidgets>
#include <QDebug>
#include <QDateTime>
#include <QTcpSocket>//网络连接类
#include <QTextStream>
#include <QSqlDatabase>
#include <QSqlQuery> // 数据库操作类
#include <QSqlError> // 数据库错误信息类


namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;
    QTcpSocket* client;//客户端连接对象
    void printMsg(QString); // 输出内容到公屏
    QSqlDatabase db; // 栈内存的数据库连接对象
    void connect2DB(); // 连接到数据库
    void createTable(); // 创建表
    void insertData(QString,QString); // 插入数据
    QString get_time();

private slots:
    void btnConnClickedSlot(); // 点击连接按钮的槽函数
    void btnSendClickedSlot(); // 点击发送按钮的槽函数
    void connectedSlot();//连接成功的槽函数
    void disconnectedSlot();//断开连接的槽函数
    void readReadSlot(); // 接收数据的槽函数
    void btnsClickedSlot();//按钮点击的槽函数
};

#endif // DIALOG_H

.cpp 

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    setWindowFlags(Qt::WindowStaysOnTopHint);

    connect(ui->pushButtonConn,SIGNAL(clicked()),
            this,SLOT(btnConnClickedSlot()));
    connect(ui->pushButtonSend,SIGNAL(clicked()),
            this,SLOT(btnSendClickedSlot()));

    //创建客户端对象
    client = new QTcpSocket(this);
    // 建立网络连接检测的信号槽
    connect(client,SIGNAL(connected()),
            this,SLOT(connectedSlot()));
    connect(client,SIGNAL(disconnected()),
            this,SLOT(disconnectedSlot()));
    // 接收消息的信号槽
    connect(client,SIGNAL(readyRead()),
            this,SLOT(readReadSlot()));
    connect2DB();
    connect(ui->pushButton,SIGNAL(clicked()),
            this,SLOT(btnsClickedSlot()));
}

Dialog::~Dialog()
{
    disconnect(client,SIGNAL(disconnected()),
               this,SLOT(disconnectedSlot()));
    // 如果还在连接
    if
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值