使用Qt 开发已经两年,写过不少垃圾,但总体还是有所得,从现在开始逐渐整理一些代码,同时也整理一下收获。
该项目自定义控件是飞扬青云给出的开源控件经过整理得到,如有需求请直接访问飞扬青云 (feiyangqingyun) - Gitee.com
下面直接上代码
#include <QObject>
#include <QTcpSocket>
class QTcpSocket;
class TcpClient : public QObject
{
Q_OBJECT
public:
explicit TcpClient(QObject *parent = nullptr);
~TcpClient();
QAbstractSocket::SocketState getState() const;
static char ConvertHexChar(char ch);//16进制字符转16进制值
static QByteArray StringToHex(QString data);//16进制字符串转16进制值
static QString HexToString(QByteArray data);//16进制值转16进制字符串
private:
void createConnect();//创建连接
void deleteConnect();//删除连接
QTcpSocket TcpSocket;
signals:
void stateChanged(QAbstractSocket::SocketState state);//连接状态改变槽函数
void errorOccurred(QString errorInfo);//错误信号
void dataOccurred(QByteArray data);//数据到达信号
void writeCompelete(QByteArray data);//发送数据完成
public slots:
void connectDevice(QString ipAddress,int port);//连接服务
void disconnectDevice();//断开连接
void sendMessage(QByteArray data);//发送数据
private slots:
void onErrorOccurred(QAbstractSocket::SocketError error);
void onReadyRead();
};
#include <QWidget>
#include "tcpclient.h"
QT_BEGIN_NAMESPACE
namespace Ui { class TcpClientWidget; }
QT_END_NAMESPACE
class TcpClientWidget : public QWidget
{
Q_OBJECT
public:
TcpClientWidget(QWidget *parent = nullptr);
~TcpClientWidget();
TcpClient* getClient();
private:
void createConnect();
void deleteConnect();
Ui::TcpClientWidget *ui;
TcpClient Client; //TCP客户端
signals:
void stateChanged(QAbstractSocket::SocketState state);//连接状态改变信号
public slots:
protected slots:
private slots:
void onStateChanged(QAbstractSocket::SocketState state);//连接状态改变槽函数
void addRequestRecord(QByteArray data);//添加一条请求记录槽函数
void addReplyRecord(QByteArray data);//添加一条响应记录槽函数
void on_state_toolButton_clicked();//连接状态控制按钮
void on_clear_pushButton_clicked();//清除按钮
void on_send_pushButton_clicked();//发送按钮
};