欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Qt网络编程、tcp通信、文件传输、程序打包和图标设置(QT五)

发布时间:2023/12/9 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Qt网络编程、tcp通信、文件传输、程序打包和图标设置(QT五) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

  • 一、Qt网络编程
    • 1.qt封装了网络模块QtNetwork
    • 2.Qt底层编程接口
  • 二、QT -> tcp通信
    • 1.服务器端 QTcpServer+QTcpSocket
      • (1)创建QTcpServer对象
      • (2)调用对象方法监听(listen(ip, port) 启动服务器)
      • (3)当有客户端连接的时候QTcpServer对象会发送newConnection信号 -> 关联槽函数
      • (4)在槽函数中通过QTcpServer对象获取QTcpSocket对象
      • (5)通过QTcpSocket对象发送数据给客户端
      • (6)当客户端有数据到达服务器QTcpSocket对象会发送readyRead信号--关联槽函数
      • (7)在槽函数中通过QTcpSocket对象读取数据
    • 2.客户端 QTcpSocket
      • (1)创建QTcpSocket对象
      • (2)调用对象方法链接服务器(connectToHost(IP, port))、
      • (3)发送数据
      • (4)当QTcpSocket有数据可读会发送readyRead信号--关联槽函数
      • (5)在槽函数中读取数据
  • 三、Qt文件传输
  • 四、Qt程序打包(绿色免安装版本)
  • 五、给Qt程序设置app图标
    • 1.第一种方式添加图标
      • (1)把图标图片添加到资源文件
      • (2)设置显示
    • 2.第二种方式添加图标

一、Qt网络编程

1.qt封装了网络模块QtNetwork

在QT中使用网络要在工程文件中添加QT += network

2.Qt底层编程接口

QTcpSocket,QTcpServer, QUdpSocket

二、QT -> tcp通信

QTcpServer(创建socket套接字, 绑定, 监听, 接受链接)

QTcpSocket(创建socket套接字–链接时候创建, 接收数据, 发送数据)

1.服务器端 QTcpServer+QTcpSocket

(1)创建QTcpServer对象

QTcpServer mserver;

(2)调用对象方法监听(listen(ip, port) 启动服务器)

mserver.listen(QHostAddress::Any, ui->portEdit->text().toUShort());

(3)当有客户端连接的时候QTcpServer对象会发送newConnection信号 -> 关联槽函数

connect(&mserver, &QTcpServer::newConnection, this, &ServerTcp::new_client);

(4)在槽函数中通过QTcpServer对象获取QTcpSocket对象

void ServerTcp::new_client() {QTcpSocket *msocket = mserver.nextPendingConnection();//获取与客户端通信的套接字//向客户端发送数据msocket->write("connect"); }

(5)通过QTcpSocket对象发送数据给客户端

msocket->write("connect");

(6)当客户端有数据到达服务器QTcpSocket对象会发送readyRead信号–关联槽函数

connect(msocket, &QTcpSocket::readyRead, this, &ServerTcp::read_data);

(7)在槽函数中通过QTcpSocket对象读取数据

void ServerTcp::read_data() {//获取信号发送者QTcpSocket *msocket = dynamic_cast<QTcpSocket*>(sender());//读取数据QString msg = msocket->readAll();//获取对方IPQString ip = msocket->peerAddress().toString();ui->textBrowser->append(ip+":"+msg); }

2.客户端 QTcpSocket

(1)创建QTcpSocket对象

QTcpSocket msocket;

(2)调用对象方法链接服务器(connectToHost(IP, port))、

msocket.connectToHost(ui->ipEdit->text(), ui->portEdit->text().toUShort());

(3)发送数据

QString data = ui->textEdit->toPlainText();msocket.write(data.toUtf8());

(4)当QTcpSocket有数据可读会发送readyRead信号–关联槽函数

connect(&msocket, &QTcpSocket::readyRead, this, &ClientTcp::read_data);

(5)在槽函数中读取数据

void ClientTcp::read_data() {//读取数据QString msg = msocket.readAll();ui->textBrowser->append(msg); }

三、Qt文件传输

设置绑定的端口 -> 接收文件的路径 -> 通过配置文件设置

QSettings settings("config.ini",QSettings::IniFormat); //在当前目录下创建配置文件config.ini QString fname = settings.value("savepath").toString(); //根据key=savepath从文件中获取value=F:/cc_codeconfig.ini文件 [General] port=5678 savepath=F:/cc_codesettings.setValue("port", 5678); //把文件中的port设置为5678 QString filepath = QFileDialog::getExistingDirectory(this); settings.setValue("savepath",filepath); //把文件中的savepath设置为filepath对应的内容

四、Qt程序打包(绿色免安装版本)

1.把程序编译成发布版本

2.把编译好的release版本的app拷贝到一个目录下(比如自定义app目录

3.把程序运行依赖的库拷贝到当前目录下(双击会提示缺省那些库)
(通过Qt工具自动提取依赖库)

C:\Qt\Qt5.12.0\5.12.0\mingw73_64\bin\windeployqt.exe RecvFile.exe 可以把RecvFile.exe运所依赖的库提取到当前目录下(非qt库还要自己添加)

五、给Qt程序设置app图标

1.第一种方式添加图标

(1)把图标图片添加到资源文件

(2)设置显示

#include "recvfile.h" #include <QApplication> #include <QIcon> int main(int argc, char *argv[]) {QApplication a(argc, argv);RecvFile w;QIcon icon(":/index.png");w.setWindowIcon(icon); //设置app图标w.show();return a.exec(); }

2.第二种方式添加图标

QT是跨平台的程序设计库,在windows下的程序往往想要有一个好看的图标,方法如下:

(1)准备个ICO图标。例如:sending.ico //放工程目录下

(2)在.pro文件(项目文件)里写:RC_ICONS = sending.ico

(3)保存,重新编译程序

总结

以上是生活随笔为你收集整理的Qt网络编程、tcp通信、文件传输、程序打包和图标设置(QT五)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。