- 博客(143)
- 资源 (37)
- 收藏
- 关注
原创 Qt 多语言界面设计概述
有些软件需要开发多语言界面版本,如中文版和英文版,并且在软件里可以方便地切换界面语言。Qt 为多语言界面提供了很好的支持,使用 Qt 的一些规则和工具,可以很方便地为应用程序开发提供多语言界面支持。
2023-05-08 10:30:01
1654
1
原创 Qt多媒体模块功能概述
多媒体功能指的主要是计算机的音频和视频的输入、输出、显示和播放等功能,Qt 的多媒体模块为音频和视频播放、录音、摄像头拍照和录像等提供支持,甚至还提供数字收音机的支持。本文将介绍Qt 多媒体模块的功能和使用。
2023-05-06 10:33:31
612
原创 QT 网络编程之主机信息查询(QHostInfo 和 QNetworkInterface类)简介
Qt 网络模块提供了用于编写 TCP/IP 客户端和服务器端程序的各种类,如用于 TCP 通信的QTcpSocket 和 QTcpServer,用于 UDP 通信的 QUdpSocket,还有用于实现 HTTP、FTP 等普通网络协议的高级类如 QNetworkRequest,QNetworkReply 和QNetworkAccessManager。Qt 网络模块还提供用于网络代理、网络承载管理的类,提供基于安全套接字层(Secure Sockets Layer,SSL)协议的安全网络通信的类。
2023-04-28 10:11:40
1291
原创 QT Data Visualization 模块概述(数据三维显示的模块)
Data Visualization 是 Qt 提供的用于数据三维显示的模块。在 Ot 5.7 以前只有商业版才有此模块,而从Qt5.7 开始此模块在社区版本里也可以免费使用了。Data Visualization 用于数据的三维显示,包括三维柱状图、三维空间散点、三维曲面等。Data Visualization 与 Qt Charts 类似,也是基于Qt 的图形视图架构。Data Visualization 的功能无法和一些专业的三维显示类库相提并论,但是对于一些简单的三维数据显示是比较实用的。
2023-04-26 15:40:03
1434
原创 QT Graphics View 绘图架构之场景、视图与图形项简介
缺省情况下,当视图大于场景时,场景在视图的中间部分显示,也可以设置视图的 Alignment 属性控制场景在视图中的显示位置:当视图小于场景时 (见上图中的视图 2),视图只能显示场景的一部分内容,但是会自动提供卷滚条在整个场景内移动。在上图所示的视图、场景和图形项之间的关系示意图中,场景是图形项的容器,可以在场景上绘制很多图形项,每个图形项就是一个对象,这些图形项可以被选择、拖动等。场景是不可见的,是一个抽象的管理图形项的容器,可以向场景添加图形项,获取场景中的某个图形项等。1、场景、视图与图形项。
2023-04-25 14:20:41
1301
原创 QT QPainter绘图之视口和窗口简介
1、视口和窗口的定义与原理绘图设备的物理坐标是基本的坐标系,通过 QPainter 的平移、旋转等变换可以得到更容易操作的逻辑坐标。为了实现更方便的坐标,QPainter 还提供了视口 (Viewport)和窗口 (Window)坐标系,通过QPainter 内部的坐标变换矩阵自动转换为绘图设备的物理坐标。视口表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标的一个矩形区域用于绘图。默认情况下,视口等于绘图设备的整个矩形区。窗口与视口是同一个矩形,只不过是用逻辑坐标定义的坐标系。窗口可以直接定义矩
2023-04-25 10:21:36
1660
原创 QT QPainter坐标变换绘图实例(五角星绘制)
创建一个基于 QWidget 的窗口的应用程序 ,窗体上不放置任何组件。在 Widget 类的构造函数和paintEvent0事件中编写代码,代码内容如下。
2023-04-23 10:52:32
1048
原创 QT QPainter坐标系统和坐标变换
QPainter 在窗口上绘图的默认坐标系统如图下图所示,这是绘图设备的物理坐标。为了绘图的方便,QPainter 提供了一些坐标变换的功能,通过平移、旋转等坐标变换,得到一个逻辑坐标系统,使用逻辑坐标系统在某些时候绘图更方便。
2023-04-23 09:56:18
1604
原创 QT QPainter 绘制基本图形元件简介
QPainter 提供了很多绘制基本图形的功能,包括点、直线、椭圆、矩形、曲线等,由这些基本的图形可以构成复杂的图形。每个函数基本上都有多种参数形式,这里只列出函数名,给出了其中一种参数形式的示例代码,并且假设已经通过以下的代码获得了绘图窗口的 painter、窗口宽度W和高度H。//旋转120°painter.drawPie(rect, startAngle, spanAngle);绘制文本,只能绘制单行文字,字体的大小等属性由 QPainter::font0)决定。在指定的矩形区域内绘制图片。
2023-04-21 16:18:23
905
原创 qt属性系统简介( Q_PROPERTY)
Q_PROPERTY宏定义一个返回值类型为 type,名称为 name 的属性,用 READ、WRITE 关键字定义属性的读取、写入函数,还有其他的一些关键字定义属性的一些操作特性。7)CONSTANT 表示属性值是一个常数,对于一个对象实例,READ 指定的函数返回值是常数,但是每个实例的返回值可以不一样。不管是否用READ和WRITE定义了接口函数,只要知道属性名称,就可以通过QObject:property()读取属性值,并通过 QObject::setProperty0设置属性值。
2023-04-19 14:10:59
1795
原创 QT 信号与槽函数简介
至于是否立即执行槽函数,发射信号的线程是否等待槽函数执行完之后再执行后面的代码,与connect0)函数设置信号与槽关联时设置的连接类型以及信号与槽是否在同一个线程有关。1.Qt 使用信号与槽的机制实现对象间通信,它隐藏了复杂的底层实现,完成信号与槽的关联后,发射信号时并不需要知道 Ot 是如何找到槽函数的。与回调函数相比,信号与槽的执行速度稍微慢一点,因为需要查找连接的对象和槽函数,但是这种差别在应用程序运行时是感觉不到的,而其提供的灵活性却比回调函数强很多。信号函数无需实现,只需在某些条件下发射信号。
2023-04-19 11:11:29
676
原创 整理国内无线通信模组企业
Wi-Fi&Bluetooth 5模组。BT,Wi-Fi,AI语音识别等物。NFC Wi-Fi安全智能联网模组。2G/3G/4G/5GloT模组。N5 5G USB大功率无线模块。Beacon 蓝牙室内定位方案。LTE CAT.1无线通信模组。LTE CAT.4无线通信模组。loT无线控制--WiFi模块。LTE Cat.1安全通信模组。GSM/GPRS无线通信模组。LTE Cat4安全通信模组。LTE Cat.1 通讯模组。中低速模组LTE Cat1。2G/3G/4G/5G模组。
2023-04-14 10:05:19
1421
原创 QT5学习教程二——窗体基类说明
QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周 围 菜单、工具条和一个状态条。QMainWindow 常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工 具条按钮时,槽会被调用。窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
2023-04-13 09:28:08
143
原创 QT5学习教程一——Hello World例子
它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。打开项目目录下图如图,debug 文件夹与 release 文件夹内部文件是根据编辑器选择而自动生成,文件夹内是编译后的可执行文件等。1~3 行包含引用类,1~2 行是根据所选基类自动生成,3 行引用 QLabel 控件类。16 行控件在窗体中显示位置,QRect(参数 1,参数 2,参数 3,参数 4)
2023-04-13 09:26:31
864
原创 100个常用Pandas函数汇总
整理了100个Pandas常用的函数,分为6类:统计汇总函数、数据清洗函数、数据筛选、绘图与元素级运算函数、时间序列函数和其他函数。
2023-04-11 15:03:12
606
原创 程序员必用的6个代码对比神器附下载地址
支持常见版本控制工具,包括subversion、git、mercurial、 CVS 等,可以通过 Diffuse 直接从版本控制系统获取源代码,以便对其进行比较和合并。Code Compare是一款用于程序代码文件的比较工具,目前Code Compare支持的对比语言有:C#、C++、CSS、HTML、Java、JavaScrip等语言。它使用方便,支持键盘快捷键,可以同步进行横向和纵向卷动,支持Unicode格式和大于4GB的文件,可以生成HTML格式的比较报告。六、Code Compare。
2023-04-11 13:57:32
3446
原创 QML常用界面设计组件浮点数SpinBox与十六进制控件
qt官方提供的SpinBox组件只支持整数,对于浮点数没有支持。根据选择可以实现不同功能显示。而且提供十六进制显示与输入。
2023-04-10 11:25:00
341
原创 CAN 发展史
一、起源 1986 年 2 月 Robert Bosch 公司在 SAE 汽车工程协会 大会上介绍了一种新型的串行总线 CAN控制器局域网,那是 CAN 诞生的时刻。今天,在欧洲几乎每一辆新客车均装配有 CAN 局域网。同样,CAN也用于其他类型的交通工具,从火车到轮船或者用于工业控制。CAN 已经成为全球范围内最重要的总线之一,甚至领导着串行总线。在1999年,接近 6 千万个 CAN 控制器投入应用;2000 年,市场销售超过1 亿个 CAN 器件。 在 1980 年的早些时
2023-04-10 10:03:22
679
原创 WT588D 语音芯片在线下载制板步骤
WT588D 语音芯片的优良性能,卓越品质,以及出众音质,均已被众多开发人员所认可和相互推荐使用,应用场合无所丌有,在一些干扰性比较强的环境戒电路板中,会出现电路板对 WT588D 语音芯片产生干扰从而影响 WT588D 语音芯片正常工作,戒者是布置 PCB 出现错漏,以及样板过孔丌通等情况,使得后期在追查原因、重新布板等方面,花费一些没必要浪费的时间,人为“客观” 的延长了开发周期。先在印刷电路板上焊接存储器,如图 1 所示,引出 6 根数据线,连接到 WT588D 下载器,尝试第一次下载。
2023-04-06 18:56:28
907
原创 WT588D软件操作教程二
地址序号”里有 0~ 219 可供选择,点击“+”(键盘快捷键 W)或“-”(键盘快捷键 S),增大或减小地址,在地址里面的语音可以被按键( I/O 口 P00)调用直接控制播放,如设置按键 1 的触发方式为“脉冲可重复”,触发地址为“0”,用脉冲触发按键 1(I/O口 P00),就能按顺序播放地址 0 里面的所有语音。通过 USB 线连接好终端的下载器,点击“工具”→“下载”,也可以直接点击软件主界面上的下载图标或者在软件操作状态下点F5,就会弹出下载窗口。且“下载到 SPI 存储器”选项被激活。
2023-04-04 09:59:56
1170
1
原创 WT588D软件操作教程一
按键模式下,按键 1( P00)、按键 2( P01)、按键 3( P02)、按键 4( P03)、按键 5( P04)、按键 6( P05)、按键 7( P06)、按键 8( P07)、按键 9( P10)、按键 10( P11)为有效状态,点击“操作”→“按键设置”,看到按键 1~按键 10 都处于激活状态,点击旁边的下拉菜单,可以设置各个按键( I/O 口)的触发方式。系统默认各个按键为脉冲可重复触发。依次为“新建工程”、“打开工程”、“编译并保存为 BIN”、“选项”、“下载”、“帮助”。
2023-04-04 09:43:32
1609
1
原创 语音芯片WTW-28P 应用电路
采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。
2023-04-03 09:09:15
859
原创 WTW-16P 应用电路
采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。
2023-04-03 09:02:40
467
原创 WT588D-32L 应用电路
采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。
2023-04-03 08:55:45
451
原创 WT588D-20SS 应用电路
采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。
2023-03-30 13:30:30
593
原创 WT588D 语音芯片及模块应用电路
采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。
2023-03-30 13:25:07
4160
3
原创 WT588D 下载测试工具介绍
脱机下载的好处是,可以彻底的摆脱电脑进行操作,不需要依靠庞大的电脑。WT588D 一拷八编程器跟 WT588D Mini Download V1.2 一样,在外部控制部分的协助下能测试 7 种控制模式,其中按键控制模式、MP3 控制模式、并口控制模式不需要外部的工具辅助就能测试,一线串口控制模式、三线串口控制模式以及三线串口控制 I/O口扩展输出模式需要在外部搭配微型处理器,3×8 矩阵控制模式需要在外部搭配矩阵按键板,各个 I/O 口都可以从 I/O 口引出线那里得到输出。但其他的控制模式均能正常测试。
2023-03-29 19:30:01
1691
原创 WT588D 应用注意事项
而在降低采样率的时候,软件都是通过减慢音频的节奏来得到更低的采样率的,这样,当在播放低采样率音频时,如果选用标注的震荡电阻,则会出现播放时音频出现节奏缓慢变慢的情况。ISP 在线下载时( WT588D 在应用环境中直接下载内容),须让 WT588D 处于停止工作的状态,如下载时把 WT588D 的 RESET脚拉低接地,或者接到 WTU02 的 P17 脚, WTU02 的 P17 在下载数据时为低电平,平时为高电平,从而起到在下载时对 WT588D进行复位。音频从 8K 采样率时起,声音的表现很好。
2023-03-29 18:16:51
659
原创 Qt + ROS 开发环境搭建
我这里的 Name 和 catkin 工作空间文件夹名字相同(也可以不同)名为 catkin_ws_qt,然后选择“浏览” ——“创建文件夹”,创建一个名为 catkin_ws_qt 的文件夹,按回车,再选择“打开”。使用插件的“新建项目”中的“Import ROS Workspace”选项不仅可以新建工作空间还可以导入现有的工作空间,而“新建文件”中的“ROS”下面的“Package”、“Basic Node”等选项可以创建 package 和和节点、 launch 文件、 urdf 文件等。
2023-03-28 16:00:26
876
原创 Linux ITIMER_REAL 3 个内部间隔计时器
真实间隔定时器(ITIMER_REAL):这种间隔定时器在启动后,不管进程是否运行,每个时钟滴答都将其间隔计数器减1。当减到0值时,内核向进程发送SIGALRM信号。结构类型task_struct中的成员it_real_incr则表示真实间隔定时器的间隔计数器的初始值,而成员it_real_value则表示真实间隔定时器的间隔计数器的当前值。由于这种间隔定时器本质上与上一节的内核定时器时一样的,因此Linux实际上是通过real_timer这个内嵌在task_struct结构中的内核动态定时器来实现真...
2022-07-01 09:23:44
618
原创 C++ 精选 30 个面试题
1.new、delete、malloc、free之间的关系malloc 和 free 都是 C/C++ 语言的标准库函数,new/delete 是 C++ 的运算符。new 调用构造函数,delete 会调用对象的析构函数,而 free 只会释放内存。它们都可用于申请动态内存和释放内存。但对于非内部数据类型的对象而言,光用 malloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于 malloc/free 是库函数而不是运算符,不在
2022-03-01 13:23:11
152
原创 C++设置模式之组合(Composite )模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
2022-02-17 14:09:50
552
原创 嵌入式操作系统FreeRTOS:低功耗 Tickless 模式
很多应用场合对于功耗的要求很严格,比如长期无人照看的数据采集仪器,可穿戴设备等。其实很多 MCU 都有相应的低功耗模式,以此来降低设备运行时的功耗,进行裸机开发的时候就可以使用这些低功耗模式。但是现在我们要使用操作系统,因此操作系统对于低功耗的支持也显得尤为重要,这样硬件与软件相结合,可以进一步降低系统的功耗。这样开发也会方便很多,毕竟系统已经原生支持低功耗了,我们只需要按照系统的要求来做编写相应的应用层代码即可。FreeRTOS 提供了一个叫做 Tickless 的低功耗模式。
2022-02-16 13:39:49
1742
原创 C++设计模式之单例模式Singleton 模式与全局变量区别
很多情况下, 我们使用 Singleton 模式达到的效果和全局变量达到的效果类似。但是, 全局变量不能防止实例化多个对象。Singleton 模式的意图“保证一个类仅有一个对象,并提供一个访问它的全局访问点”,因此全局变量可以达到后面半句的效果, 但是却不能保证仅有一个对象被实例化。另外, 使用全局变量将使得对象在无论是否用到都要被创建,而 Singleton 模式则没有这个瑕疵。
2022-02-15 15:41:02
1507
原创 C++设计模式之享元(Flyweight)模式
Flyweight 模式在实现过程中主要是要为共享对象提供一个存放的“仓库”(对象池),这里是通过 C++ STL 中 Vector 容器, 当然就牵涉到 STL 编程的一些问题( Iterator 使用等)。另外应该注意的就是对对象“仓库”(对象池) 的管理策略(查找、 插入等), 这里是通过直接的顺序遍历实现的,当然我们可以使用其他更加有效的索引策略,例如 Hash 表的管理策略,当时这些细节已经不是 Flyweight 模式本身要处理的了。
2022-02-14 16:32:03
126
原创 C++设计模式之装饰器(Decorator 模式)模式
Decorator 模式除了采用组合的方式取得了比采用继承方式更好的效果, Decorator 模式还给设计带来一种“即用即付” 的方式来添加职责。 在 OO 设计和分析经常有这样一种情况:为了多态, 通过父类指针指向其具体子类, 但是这就带来另外一个问题, 当具体子类要添加新的职责, 就必须向其父类添加一个这个职责的抽象接口, 否则是通过父类指针是调用不到这个方法了。
2022-02-14 15:28:34
938
原创 C++结构型模式之桥接(Bridge )模式
Bridge 是设计模式中比较复杂和难理解的模式之一, 也是 OO 开发与设计中经常会用到的模式之一。 使用组合( 委托) 的方式将抽象和实现彻底地解耦, 这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低。而这里的“实现” 的含义指的是怎么去实现用户的需求, 并且指的是通过组合(委托) 的方式实现的, 因此这里的实现不是指的继承基类、实现基类接口,而是指的是通过对象组合实现用户的需求。
2022-02-12 18:21:49
1394
原创 C++ 工厂模式(Factory 模式)简介与实现
以上两个问题也就引出了 Factory 模式的两个最重要的功能:1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到了子类中。
2022-02-11 11:37:33
2721
原创 嵌入式Linux设备驱动中断下文之工作队列
工作队列(workqueue) 是实现中断下文的机制之一, 是一种将工作推后执行的形式。tasklet 也是实现中断下文的机制。 他们俩个最主要的区别是 tasklet不能休眠, 而工作队列是可以休眠的。 所以, tasklet 可以用来处理比较耗时间的事情, 而工作队列可以处理非常复杂并且更耗时间的事情。
2022-01-25 10:05:44
1005
原创 嵌入式Linux 阻塞和非阻塞 IO 驱动设备访问模式
阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式, 在编写驱动的时候一定要考虑到阻塞和非阻塞。
2022-01-25 09:03:57
439
实现CAN总线与组态王5-1数据交换的一种方法.zip
2023-04-03
CAN 基本知识及CAN 控制器 SJA1000 验收滤波器原理与应用.zip
2023-04-03
CAN-bus 规范 V2.0 版本(中文版)及整理的教程与现场总线应用方案.zip
2023-04-03
基于CAN的较高层协议和子协议智能停车场的现场总线 CAN-bus网络.zip
2023-04-03
AN2561-STM32F10xxx CAN应用实例与RT-Thread上的CAN驱动和应用.zip
2023-04-03
FAT32参考资料与PS2参考资料.zip
2023-03-30
JF24C资料与NRF24L01资料.zip
2023-03-30
整理的WT588D语音芯片及模块详细资料.zip
2023-03-29
基于改进A-算法的水面无人船全局路径规划小论文.docx
2023-03-29
整理的人工智能学习教程资料.zip
2023-03-28
JAVA核心面试知识整理.zip
2023-03-28
Python爬虫学习资料收集.zip
2023-03-27
计算机应用专业简历模板.zip
2023-03-27
python学习资料(正则表达式).zip
2023-03-27
Python学习资料及数据分析与自然语言处理.zip
2023-03-27
MySQL面试专题及性能优化教程.zip
2023-03-27
Python文本分析教程.rar
2023-03-27
C++数据结构各大公司笔试面试题
2023-03-27
基于电子海图矢量数据建模的无人船路径规划-吕红光.caj
2023-03-27
Numpy-100页精华与NumPy-100-Original.zip
2023-03-27
36个Python项目案例源代码
2022-12-13
MMA7361模块(程序+原理图+芯片资料)+NRF24L01无线模块(程序+原理图+芯片资料).zip
2022-03-17
PCB板布线开关电源的PCB布线设计有例子多层复合布线板之弯曲PCB简介.zip
2022-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人