当前位置: 首页 > news >正文

Vscode + docker + qt 网络监听小工具

文章目录

          • 上效果
          • Vscode插件
          • 项目目录
          • Dockerfile
          • 构建指令
          • 镜像构建完成
          • 运行容器
          • 导入项目
          • 容器管理
          • 运行
          • 测试
          • 源代码

上效果

在这里插入图片描述

Vscode插件

在这里插入图片描述

项目目录

代码我是让豆包帮我生成的
注意关键词使用qt5帮我生成一个网速监测的QT示例工程
在这里插入图片描述

Dockerfile
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04# 设置非交互模式,避免安装过程中出现交互提示
ENV DEBIAN_FRONTEND=noninteractive# 更新软件源并安装基础工具
RUN apt-get update && apt-get install -y \sudo \apt-transport-https \ca-certificates \curl \gnupg \lsb-release \software-properties-common \build-essential \git \wget \vim \locales \fonts-wqy-microhei \language-pack-zh-hans \&& rm -rf /var/lib/apt/lists/*# 安装Qt开发环境
RUN apt-get update && apt-get install -y \qtcreator \qtbase5-dev \qt5-qmake \qtbase5-dev-tools \qttools5-dev \qttools5-dev-tools \libqt5svg5-dev \qtmultimedia5-dev \libqt5multimedia5-plugins \qtwebengine5-dev \&& rm -rf /var/lib/apt/lists/*# 创建一个非root用户,避免权限问题
RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo
USER maqi
WORKDIR /home/maqi# 设置环境变量
ENV PATH="/usr/lib/x86_64-linux-gnu/qt5/bin:${PATH}"# 暴露Qt Creator默认使用的端口(如果需要远程调试)
EXPOSE 10000-10010# 设置中文环境
USER root
RUN locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# 切換普通用戶  
USER maqi# 容器启动时运行Qt Creator
CMD ["qtcreator"]
构建指令
# 构建Qt开发环境镜像
docker build -t qt-dev-env:latest .# 查看构建的镜像
docker images | grep qt-dev-env# 确保当前目录存在qt5_network文件夹,用于存放项目文件
mkdir -p qt5_network# 运行Qt开发环境容器
# --rm: 容器退出后自动删除
# -it: 交互式终端
# -e DISPLAY: 共享主机的显示
# -v /tmp/.X11-unix:/tmp/.X11-unix: 挂载X11 socket,允许图形界面显示
# -v $(pwd)/qt5_network:/home/maqi/qt5_network: 将本地项目目录挂载到容器中
docker run --rm -it \-e DISPLAY=$DISPLAY \-e LANG=zh_CN.UTF-8 \-e LC_ALL=zh_CN.UTF-8 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v $(pwd)/qt5_network:/home/maqi/qt5_network \--name qt-dev-container \qt-dev-env:latest
镜像构建完成
maqi@maqi-Vostro-5590:~/Desktop$ docker build -t qt-dev-env .
[+] Building 36.1s (10/10) FINISHED                                                                                           docker:default=> [internal] load build definition from Dockerfile                                                                                    0.0s=> => transferring dockerfile: 1.40kB                                                                                                  0.0s=> [internal] load metadata for docker.io/library/ubuntu:22.04                                                                        23.7s=> [internal] load .dockerignore                                                                                                       0.0s=> => transferring context: 2B                                                                                                         0.0s=> [1/6] FROM docker.io/library/ubuntu:22.04@sha256:5e14404dbc9df30fef8460020b99a3c0034241283912189fd4650e446d8d6c92                   0.0s=> CACHED [2/6] RUN apt-get update && apt-get install -y     sudo     apt-transport-https     ca-certificates     curl     gnupg       0.0s=> CACHED [3/6] RUN apt-get update && apt-get install -y     qtcreator     qtbase5-dev     qt5-qmake     qtbase5-dev-tools     qttool  0.0s=> CACHED [4/6] RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo                                                0.0s=> CACHED [5/6] WORKDIR /home/maqi                                                                                                     0.0s=> [6/6] RUN locale-gen zh_CN.UTF-8                                                                                                    2.5s=> exporting to image                                                                                                                  9.7s=> => exporting layers                                                                                                                 9.6s=> => writing image sha256:f50d7eed6bc65f56037cbc80f35b7304d61c46a4aa6658666634ef3b17d074be                                            0.0s=> => naming to docker.io/library/qt-dev-env                                                                                           0.0s
maqi@maqi-Vostro-5590:~/Desktop$ ^C
maqi@maqi-Vostro-5590:~/Desktop$ docker run --rm -it \
>     -e DISPLAY=$DISPLAY \
>     -e LANG=zh_CN.UTF-8 \
>     -e LC_ALL=zh_CN.UTF-8 \
>     -v /tmp/.X11-unix:/tmp/.X11-unix \
>     -v $(pwd)/qt5_network:/home/maqi/qt5_network \
>     --name qt-dev-container \
>     qt-dev-env:latest
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-maqi'
MESA: error: Failed to query drm device.
libGL error: glx: failed to create dri3 screen
libGL error: failed to load driver: iris
libGL error: failed to open /dev/dri/card0: 
运行容器
docker run --rm -it \-e DISPLAY=$DISPLAY \-e LANG=zh_CN.UTF-8 \-e LC_ALL=zh_CN.UTF-8 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v $(pwd)/qt5_network:/home/maqi/qt5_network \--name qt-dev-container \qt-dev-env:latest
导入项目

在这里插入图片描述

容器管理

在这里插入图片描述

运行
qmake
make
./NetworkMonitor
测试

wget http://speedtest.tele2.net/10MB.zip

源代码

https://github.com/goodluckforme/qt5_network.git


文章转载自:

http://OwwoSrRX.fmkbk.cn
http://bcZZB2d6.fmkbk.cn
http://ersn9IMR.fmkbk.cn
http://QTjFeHhW.fmkbk.cn
http://DZes0HGT.fmkbk.cn
http://Y6QYzfHW.fmkbk.cn
http://k5DT0WoJ.fmkbk.cn
http://mvaTcQHh.fmkbk.cn
http://FPKDS45B.fmkbk.cn
http://9Yhz7sPT.fmkbk.cn
http://i6S3lSos.fmkbk.cn
http://4IeYZ35W.fmkbk.cn
http://t7AubSxr.fmkbk.cn
http://pdxqp9zo.fmkbk.cn
http://L5lHiGGl.fmkbk.cn
http://l9GZZgbt.fmkbk.cn
http://AXXuSIqj.fmkbk.cn
http://PyJDvZMp.fmkbk.cn
http://Kxjg95wc.fmkbk.cn
http://lFRj4kGl.fmkbk.cn
http://8DrhpOpT.fmkbk.cn
http://dHlRTnXj.fmkbk.cn
http://UQOH20MX.fmkbk.cn
http://OW7B25dV.fmkbk.cn
http://X53EuWBm.fmkbk.cn
http://sKCSXR5Z.fmkbk.cn
http://T0z48Ka2.fmkbk.cn
http://YB8rWVTF.fmkbk.cn
http://tzBPUz0i.fmkbk.cn
http://n5W8hxp8.fmkbk.cn
http://www.dtcms.com/a/363613.html

相关文章:

  • 25.9.2_CTF_reverse_TEA算法
  • 项目解析:技术实现与面试高频问题
  • 交叉熵损失函数
  • 一文读懂 Python 【循环语句】:从基础到实战,效率提升指南
  • 零构建的快感!dagger.js 与 React Hooks 实现对比,谁更优雅?
  • 餐饮、跑腿、零售多场景下的同城外卖系统源码扩展方案
  • 基于高德地图实现后端传来两点坐标计算两点距离并显示
  • JDK16安装步骤及下载(附小白详细教程)
  • 【Spring Cloud微服务】9.一站式掌握 Seata:架构设计与 AT、TCC、Saga、XA 模式选型指南
  • Javascript》》JS》》ES6》 Map、Set、WeakSet、WeakMap
  • Java 技术支撑 AI 系统落地:从模型部署到安全合规的企业级解决方案(一)
  • SQL分类详解:掌握DQL、DML、DDL等数据库语言类型
  • Java-Spring入门指南(二)利用IDEA手把手教你如何创建第一个Spring系统
  • Python学习-day4
  • win32diskimager强行缩减TF卡镜像制作尺寸的方法
  • Zynq中级开发七项必修课-第四课:S_AXI_HP0 高速端口访问 DDR
  • 整理期初数据用到的EXCEL里面的函数操作
  • 2026届长亭科技秋招正式开始
  • 炫酷JavaScript鼠标跟随特效
  • Nano Banana 新玩法超惊艳!附教程案例提示词!
  • CMake构建学习笔记23-SQLite库的构建
  • SQL Server 数据库创建与用户权限绑定
  • 构建下一代智能金融基础设施
  • 网络编程 05:UDP 连接,UDP 与 TCP 的区别,实现 UDP 消息发送和接收,通过 URL 下载资源
  • 网络传输的实际收发情况及tcp、udp的区别
  • python 创建websocket教程
  • 异常处理小妙招——1.别把“数据库黑话”抛给用户:论异常封装的重要性
  • GitHub每日最火火火项目(9.2)
  • 使用谷歌ai models/gemini-2.5-flash-image-preview 生成图片
  • Python/JS/Go/Java同步学习(第一篇)格式化/隐藏参数一锅端 四语言输出流参数宇宙(附源码/截图/参数表/避坑指南/老板沉默术)