Qt 基本TCP Client 实现

使用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();//发送按钮
};

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QT是一种跨平台的应用程序开发框架,它可以用于开发各种类型的应用程序,包括图形界面应用程序。黑暗模式是一种目前流行的应用程序界面设计风格,它将应用程序的背景色调暗,并使用深色的文字和图标,以提供更舒适的阅读体验和减少眼睛疲劳。TCP客户端是一种通过TCP协议与服务器进行通信的应用程序。 如果要在QT实现黑暗模式的TCP客户端,可以按照以下步骤进行操作: 1. 修改应用程序的主题:首先,在QT中选择一个适合的黑暗主题,或使用自定义的样式表将应用程序的背景色设置为暗色调。可以使用QPalette类或QSS(Qt样式表)来实现这个目标。 2. 自定义控件样式:根据黑暗模式的要求,使用QSS或直接在代码中设置控件的颜色、边框等属性,以便其样式与黑暗模式相匹配。可以使用QStyle类或QWidget的样式相关方法进行操作。 3. 加强文字和图标的对比度:确保文本和图标在黑暗背景上具有足够的对比度,以便用户能够清楚地看到它们。可以使用QPalette类或QSS来设置颜色和字体属性。 4. 打开和关闭TCP连接:根据实际需求,使用QT提供的TCP相关类(如QTcpSocket)创建TCP连接,并实现数据的发送和接收。 5. 处理错误和异常情况:在开发TCP客户端时,需要考虑网络异常、服务器故障等情况。可以使用QT提供的错误处理机制和异常处理语句,以确保应用程序能够正确地处理这些情况。 通过以上步骤,可以在QT实现一个黑暗模式的TCP客户端。这样的应用程序既能提供舒适的用户体验,又能高效地进行与服务器的通信。 ### 回答2: Qt 黑模式是Qt图形用户界面框架中的一种配色方案,可以使应用程序的界面呈现出黑暗的外观。黑模式通常用于提供更好的可视观感和舒适度,尤其在夜间使用时。在Qt实现黑模式的方法如下: 首先,在Qt项目中打开黑模式,可以通过如下代码实现: ```cpp QApplication::setStyle(QStyleFactory::create("Fusion")); QPalette darkPalette; darkPalette.setColor(QPalette::Window, QColor(53, 53, 53)); darkPalette.setColor(QPalette::WindowText, Qt::white); darkPalette.setColor(QPalette::Base, QColor(25, 25, 25)); darkPalette.setColor(QPalette::AlternateBase, QColor(53, 53, 53)); darkPalette.setColor(QPalette::ToolTipBase, Qt::white); darkPalette.setColor(QPalette::ToolTipText, Qt::white); darkPalette.setColor(QPalette::Text, Qt::white); darkPalette.setColor(QPalette::Button, QColor(53, 53, 53)); darkPalette.setColor(QPalette::ButtonText, Qt::white); darkPalette.setColor(QPalette::BrightText, Qt::red); darkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); darkPalette.setColor(QPalette::HighlightedText, Qt::black); qApp->setPalette(darkPalette); ``` 以上代码将应用程序界面中的各个组件的颜色设置为黑色系,并通过明亮的字体颜色进行对比。 其次,实现TCP Client的功能,需要使用Qt提供的QtNetwork模块。这里假设我们已经有了一个可用的TCP服务器(TCP Server),我们可以使用如下代码建立一个TCP客户端(TCP Client): ```cpp QTcpSocket *socket = new QTcpSocket(this); socket->connectToHost("服务器IP地址", "端口号"); if(socket->waitForConnected()){ socket->write("Hello Server"); // 向服务器发送数据 socket->waitForBytesWritten(); socket->waitForReadyRead(); QByteArray response = socket->readAll(); // 读取服务器的回应数据 // 处理服务器回应的数据 }else{ // 连接服务器失败的处理 } socket->close(); // 关闭连接 ``` 以上代码创建一个QTcpSocket对象,并使用connectToHost函数连接到指定的服务器端口。如果连接成功,我们可以通过write函数向服务器发送数据,并通过readAll函数读取服务器的回应数据。最后,使用close函数关闭连接。 这样,我们就实现了一个基本的黑模式的TCP客户端应用程序。可以根据实际需求进行更多功能的开发和定制。 ### 回答3: Qt黑模式是一种界面显示模式,它使用黑色背景和亮色文本,适合在夜间环境下使用或者用户喜好黑色主题的情况下使用。在Qt中,我们可以使用QPalette类来设置界面的颜色方案,包括黑模式。 要创建一个黑模式的TCP客户端,我们需要按照以下步骤进行操作: 1. 引入Qt网络模块。为了使用TCP协议进行网络通信,我们需要在代码中引入Qt网络模块。 ``` #include <QTcpSocket> ``` 2. 创建TCP客户端对象。使用QTcpSocket类创建TCP客户端对象,并与服务器建立连接。 ``` QTcpSocket *client = new QTcpSocket(this); client->connectToHost(serverIP, serverPort); ``` 3. 实现接收和发送数据的槽函数。我们可以编写接收和发送数据的槽函数,以便与服务器进行数据交互。 ``` connect(client, SIGNAL(readyRead()), this, SLOT(readData())); connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(writeData(qint64))); ``` 4. 设置黑模式界面。要设置黑模式界面,我们可以使用QPalette类来设置背景颜色和文本颜色。 ``` QPalette palette; palette.setColor(QPalette::Window, Qt::black); palette.setColor(QPalette::WindowText, Qt::white); this->setPalette(palette); ``` 以上是创建一个黑模式的TCP客户端的基本步骤。通过这些步骤,我们可以创建一个界面使用黑色背景和亮色文本的TCP客户端,并与服务器进行数据通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值