自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

草上爬的博客

专注技术,热爱分享,QQ:302877285

  • 博客(632)
  • 资源 (173)
  • 收藏
  • 关注

原创 Qt基础之三十六:异常处理

本文将介绍如何在Qt中使用try...catch和调试dump文件来处理异常。Qt版本5.12.6。

2023-05-28 10:39:09 2164

原创 Qt优秀开源项目之十八:QtService

QtService是一个用于实现Windows服务或unix守护进程的开源项目源码可以编译成动态库,也可以直接在项目中引用源码源码目录qtservice/examples中包含了三个例子,值得参考。

2023-04-20 22:07:01 2063 1

原创 Qt基础之三十五:Qt中文乱码探索

Qt中文乱码看这一篇就够了先说个小技巧:Qt Creator支持显示源文件编码格式右上角点UTF-8,会弹出“文件编码”对话框我的开发环境是Win10 Qt5.12.6 VS2017,IDE是Qt Creator。

2023-04-07 00:13:12 697

原创 Qt基础之三十四:QTcpSocket和QTcpServer源码分析

QTcpSocket和QTcpServer源码分析

2023-04-03 23:47:20 846

原创 Qt之设置子菜单的弹出延时

但是真*360安全卫士的托盘菜单却无此问题,而且它的子菜单弹出非常快,几乎无延迟。这就涉及到Qt的事件循环机制了,子菜单实际上是一个popup弹窗,自带事件循环,如果按钮的hover状态被取消前,事件循环就进入到子菜单中,就会出现上述问题。Qt中主菜单中的子菜单并不是立即弹出的,在windows上默认会延时256毫秒再弹出。这样一般情况下不会有问题,但是在定制菜单时可能会出现鼠标移动过快导致按钮hover状态无法自动取消的问题。这里先给出结论:将子菜单的延时设为0后,上述问题解决。

2023-04-02 15:45:28 684

原创 PS(PhotoShop)调整图片角度

最简单的就是操作菜单:图像->图像旋转->任意角度但是这样并不能一次旋转到位,更专业的做法是先用“标尺工具”在图片上画一条线,这条线与水平方向的夹角就是想要旋转的角度。我这里画的线与马的眼睛平行,这样旋转后马就是正的了。然后操作菜单:图像->图像旋转->任意角度,此时弹窗中的角度就不需要自己输入了,直接点确定即可。

2023-03-25 22:46:49 1244 1

原创 Qt之实现类似软件安装时的新功能介绍界面

在软件安装时,一般会轮播软件的新功能,安装后,如果还想查看这些新功能该怎么办呢,我们可以把这个介绍新新功能的小应用集成到软件的“帮助”菜单中,比起纯黑文字的无趣介绍,图文方式的呈现会生动得多。最近在看《赘婿》,借几张图过来用用。

2023-03-24 13:33:36 825

原创 Qt优秀开源项目之十七:QtPromise

QtPromise是规范的Qt/C++实现。该规范的译文见附录。QtPromise基于Qt5.6及以上版本,当然也包括Qt6。,每个API都提供了demo。Promise是一种异步编程的解决方案,可以替代传统的解决方案——回调函数和事件。Promise的三个特点:☆对象的状态不受外界影响。☆一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。☆以同步的方式调用异步,通过返回新的promise来实现then链式调用。

2023-03-21 20:37:01 2564 2

原创 Qt基础之三十三:海量网络数据实时显示

开发中我们可能会遇到接收的网络数据来不及显示的问题。最基础的做法是限制UI中加载的数据行数,这样一来可以防止内存一直涨,二来数据刷新非常快,加载再多也来不及看。此时UI能看到数据当前处理到什么阶段就行,实时性更加重要,要做数据分析的话还得查看日志文件。这里给出UDP+QListView和TCP+QPlainTexEdit两种实现方案。

2023-03-19 11:34:11 1796 2

原创 Qt基础之三十二:浅谈qDebug()

我们先来看看qDebug()的基本用法,再去研究qDebug的实现原理。除了qDebug(),Qt还提供了qInfo()、qWarning()、qCritical()方便我们打印不同种类的信息,而qFatal()直接结束程序,后面代码不再执行,用的较少。在Unix/X11和macOS,调试信息会打印到stderr;在Windows,如果是控制台程序,调试信息会输出到控制台,否则会输出到调试器(debugger)—比如说Qt Creator的应用程序输出(Application Output)窗口。

2023-03-18 09:56:48 1574

原创 Qt之调用内置的压缩/解压工具

​之前在Qt中直接调用过zlib,详见:Qt之调用zlib压缩与解压缩功能没想到Qt还有内置的压缩/解压工具:QZipWriter和QZipReader

2023-03-17 12:19:21 730

原创 Qt基础之三十一:Qt网络编程(TCP&UDP)

Qt网络模块(Network)提供了编写TCP/IP客户端和服务器的类。该模块不仅提供了低级(low-level)类,如QTcpSocket、QTcpServer和QUdpSocket,还提供了高级(hight-level)类,如QNetworkRequest、QNetworkReply和QNetworkAccessManager。

2023-03-14 22:21:04 1122

原创 Qt之高仿QQ系统设置界面

QQ或360安全卫士的设置界面都是非常有特点的,所有的配置项都在一个垂直的ScrollArea中,但是又能通过左侧的导航栏点击定位。这样做的好处是既方便查看指定配置项,又方便查看所有配置项。

2023-03-11 08:28:23 3099 2

原创 Qt中调用gtest进行单元测试及生成覆盖率报告

我下载的是1.12.1,这是最后一个支持C++11的版本。首先编译gtest,在windows上的编译方式和编译gRPC一模一样,详见,编译完了会生成几个静态库,如下图所示本文主要用到了libgtest.a下载,默认安装到C:\msys64,安装后修改安装目录下的etc/profile文件,在最后一行添加Qt所用的mingw版本,如下图所示否则在生成覆盖率报告的时候会出现如下提示信息,导致生成失败然后下载。

2023-03-05 14:28:59 1326

原创 Qt基础之三十:百万级任务并发处理

体现线程快的核心是延迟和吞吐量,延迟就是每个发送请求到收到响应所消耗的时间,延迟越短,程序越快,性能也越好。对于CPU密集型计算多线程本质上是提升CPU的使用率,所以对一个4核的CPU来说,理论上创建4个线程就可以了。我们都知道在进行I/O操作时,CPU是空闲状态,所以我们要最大化的利用CPU,不能让其是空闲状态。如图所示:CPU 在 A、B、C 三个线程之间切换,对于线程 A,当 CPU 从 B、C 切换回来时,线程 A 正好执行完 I/O 操作。CPU和I/O的耗时如果是1:1那开2个线程是合适的。

2023-02-28 23:03:17 753 1

原创 Windows查看占用文件的进程

Windows查看占用文件的进程

2023-02-28 22:18:32 4521

原创 Qt基础之二十九:图形视图框架(Graphics View Framework)及其应用

无意中从网络获取一份俄罗斯方块源码,基于图形视图框架(Graphics View Framework)实现的。当然源码的核心从来都不是界面,而是方块的移动、变形和消除等算法。源码非常完整,注释详细,经改动后已能在Qt5中运行,下面是运行效果,背景音乐和音效也是有的。

2023-02-21 22:45:40 918

原创 两个不错的LeeCode专栏

两个不错的LeeCode专栏:LeetCode 热题 HOT 100LeetCode 精选 TOP 面试题

2023-02-13 12:52:48 283 1

原创 Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio

SQLiteStudio是一款开源、跨平台(Windows、Linux和MacOS)的SQLite数据库管理系统。当然我这里只是简单的测试了一下。SQLiteStuido的功能很强大,要熟练使用,还得多摸索才行。不想编译的话,可以去官网下载安装包,当前最新的版本是3.4.3,安装的时候居然可以选择简体中文。下图是数据库添加页面,选择刚才的test.db,"名称"会自动显示。通过菜单:数据库->添加数据库。通过工具栏:下图中的红圈所示。下图是数据表中的数据。

2023-02-12 12:04:07 1892 1

原创 Qt基础之二十六:Qt绘图系统(Paint System)

通过从QPaintDevice类派生并重新实现QPaintDevice:paintEngine()函数,即可添加一个新的绘图设备。在paintEngine中要告知QPainter应该使用哪种绘图引擎在该设备上绘制。要真正能够在自定义绘图设备上绘制,此绘图引擎必须是从QPaintEngine类派生的自定义绘图引擎。

2023-02-11 23:15:13 1087

原创 C++11实现的线程池:ThreadPool

github地址:https://github.com/progschj/ThreadPool关于其使用,详见:C++11并发学习之六:线程池的实现

2023-02-04 14:24:07 275

原创 C++之监控文件是否被修改

软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,如果修改了,重新加载。这里config.txt和可执行文件同一目录,每次修改config.txt,就会打印File changed。

2023-02-04 14:11:22 990 3

原创 Qt基础之二十三:反射(Reflection)

不同于boost这样的模板库,Qt利用自带的Meta-Object Compiler(moc)来生成额外的C++代码,这些代码实现了Qt程序所必须的元数据对象,可以说Qt是基于C++的一种扩展。反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的地址或引用就可以获取到对象的类型信息,从而利用这些信息达到修改或重建对象的目标。☆在运行时调用对象的方法;

2023-01-25 13:26:33 4449

原创 Qt之基于Graphics View实现Mesh网络拓扑图

Mesh是一种多节点、无中心、自组织的无线多跳通信网络,也就是网状结构网络。网络中所有的节点都互相连接,每个节点拥有多条连接通道,所有的节点之间形成一个整体的网络。

2023-01-17 22:30:33 2114 23

原创 Qt之加载百度离线地图(WebKit和WebEngine)

发现存在很多问题,比如不加加载折线等图形覆盖物;只支持QtWebKit,不支持QtWebEngine。之前做项目需要在百度离线地图上绘制Mesh拓扑图,必须添加折线覆盖物,使用的是百度离线地图API V2.1,满足需求。除了添加或删除自定义覆盖物外,还支持添加自定义控件,打开或关闭信息提示窗口等等。

2023-01-14 15:20:55 2163 7

原创 Qt基础之二十一:QtRO(Qt Remote Object)实现进程间通信

这里将QtRO单独从上一篇拎出来,因为它是Qt5.9以后新加入的模块,专门用于进程间通信。其使用步骤有点类似之前介绍过的RPC(Remote Procedure Call)框架:gRPC和thrift,关于这两个框架详见和QtRO基于Socket封装,不仅支持RPC,还支持LPC(Local Process Communication),这两者都属于进程间通信。如果是用于RPC,使用QTcpSocket;如果用于LPC,则使用QLocalSocket。因为是Qt出品,能非常方便的集成到自己的Qt项目中。

2023-01-13 23:57:23 1150 2

原创 Qt基础之二十:进程间通信

进程间通信(IPC:Inter-Process Communication),就是在不同进程之间传播或交换信息。那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。

2023-01-08 14:59:03 1752

原创 Qt基础之十八:WebEngine与JavaScript交互

Qt从5.6开始就用Qt Webengine替换了Qt WebKit,据说加载速度较Qt WebKit更快。需在pro中添加QT += webenginewidgets。

2023-01-04 22:41:19 870

原创 Qt基础之十六:QtConcurrent和QThreadPool

QtCurrent模块能处理一些常见的并行计算:map、filter和reduce。它们返回一个QFuture对象,该对象可用于获取函数执行的结果。QFuture还可用于查询计算进度和暂停/恢复/取消计算。为了方便起见,QFutureWatcher可以通过信号和插槽与QFuture进行交互。QtCurrent的map、filter和reduce算法自动将计算分布到所有可用的处理器核上,因此,当QtCurrent在多核系统上更有优势。

2023-01-02 09:48:23 682 1

原创 Qt基础之十四:线程同步

虽然线程的目的是允许代码并行运行,但有时线程必须停止并等待其他线程。例如,如果两个线程试图同时写入同一个变量,则结果是未定义的。强制线程彼此等待的原则称为互斥。这是保护共享资源(如数据)的常用技术。Qt中的提供了多种线程同步方式,如下表所示Qt提供了同步相关的辅助类—QMutexLocker、QReadLocker和QWriteLocker,这样就可以更容易地使用QMutex和QReadWriteLock了。它们在构建资源时锁定资源,在销毁资源时自动解锁资源。

2022-12-31 14:26:35 719

原创 Qt中用thrift验证flume

flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。在flume中分为了3个组件,分别为source,channel和sink。Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据。Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。Channel是位于Source和Sink之间的缓冲区。

2022-12-31 09:25:45 708 2

原创 Qt中调用thrift

thrift是一个Apache公司开源的一款RPC(Remote Procedure Call)框架,让不同语言构建的服务可以做到远程调用无缝对接。Thrift库分两部分:libthrift - 核心库文件,需要依赖OpenSSL、boostlibthriftnb - 包含thrift非阻塞服务器, 需要libevent操作系统:windows 10这里因为项目需要,编译MinGW64版本的thrift。

2022-12-28 21:57:08 863

原创 Qt中调用gRPC

RPC是Remote Procedure Call的简称,中文叫远程过程调用。gRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。

2022-12-21 22:14:08 1772 1

原创 Qt基础之九:子线程和GUI交互

但回调函数不一定运行在主线程中,因此我们需要将数据封装成事件,然后用postEvent添加到事件列表,接着就可以在主线程重写的event方法中处理该事件了。Qt基础之五:使用invokeMethod异步调用函数 https://blog.csdn.net/caoshangpa/article/details/79420547。C++面试题之为什么不能多线程直接操作GUI状态 https://blog.csdn.net/caoshangpa/article/details/78557639。

2022-11-18 17:39:58 1281

原创 C++笔试题之n阶楼梯问题:每次只能走1阶或2阶,有多少种方法走完

n阶楼梯问题:每次只能走1阶或2阶,有多少种方法走完。方法一:采用递归的方式方法二:采用非递归的方式

2022-11-15 11:59:13 1685

原创 C++笔试题之用数组实现队列

队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出

2022-11-14 08:04:39 337

原创 Qt基础之四:Qt信号与槽机制原理及优缺点

在GUI编程中,当我们改变一个控件,通常希望其他控件被通知到。更一般的,我们希望任意对象之间能够通信。例如,如果我们点击了“关闭”按钮,我们希望窗口的close()函数被调用。其他工具包使用回调来实现这种通信。回调函数是一个指向函数的指针,所以如果你想要一个处理函数通知你一些事件,你可以将一个指向另一个函数(回调函数)的指针传递给处理函数。处理函数然后在适当的时候调用回调函数。但回调可能不太直观,而且在确保回调参数的类型正确性方面可能会遇到问题。

2022-11-12 09:09:07 1484

原创 QSS编辑器QssEditor之三:Ribbon控件与换肤

Ribbon控件即Office样式UI,Ribbon控件有许多开源实现,例如:SARibbon功能强大,但以学习为目的的话,我们可以自己去实现一个简单的。基本思路是自定义QTabWidget,然后通过QSS调整样式。如上图所示,我们可以实现一个类QHRibbon,继承自QTabWidget,通过接口void addTab(const QString &tabName)和void removeTab(const QString &tabName)来动态添加和删除Tab页;

2022-11-07 15:41:58 850 2

原创 QSS编辑器QssEditor之二:加载有变量的QSS

Qt样式表可以让你自定义任何一个Qt控件的样式包括颜色、边框、背景等等(你想的到样式都可以),Qt样式表的概念、术语和语法与HTML的CSS样式表类似。样式表是文本规范。一般形式也可以使用QWidget::setStyleSheet()在特定小部件(及其子部件)上设置如果在不同级别上设置了多个样式表,Qt将从所有设置的样式表派生有效样式表。这称为级联。

2022-11-07 12:45:48 961 1

原创 QSS编辑器QssEditor之一:简介

本编辑器参考了以下两个开源QSS编辑器1.这个编辑器能正常使用,支持实时预览,UI上略显简陋。但是github上release的可执行版本是不支持语法提示和自动补全的,如果想要支持这个特性,需要自己下载源码,将编辑器引擎切换到QScintilla,然后重新编译2.这个编辑器是用PyQt开发的,UI布局上就好得多,但是bug多到没法用,说好的实时预览都没兑现。本编辑器的UI布局参考该编辑器。

2022-11-05 15:07:03 2795 3

Qt高仿QQ截图

使用Qt高仿QQ截图,实现了画图形、画线、画刷、写文字、重做等功能

2017-11-27

20种数据结构和算法的C++实现

20种数据结构和算法的C++实现,详见博客:http://blog.csdn.net/caoshangpa/article/details/78557334

2017-11-17

Qt下用QSplitter实现滑动窗口

Qt下用QSplitter实现滑动窗口,详见博客:http://blog.csdn.net/caoshangpa/article/details/78549788

2017-11-16

Qt实现窗体缩放

用Qt实现的跨平台窗体缩放,详见博客:http://blog.csdn.net/caoshangpa/article/details/78543165

2017-11-15

仿360鼠标拖动图片切换效果

博客中发现有作者写的仿360的代码,觉得其中图片滑动的效果很有意思,特提取其中的代码。并加上类似mac的画面移动的动画效果。

2017-11-15

Qt OpenGL+Graphics-View

示例+源码,QtOpenGL以及Graphics-View框架整合的例子

2017-11-14

Qt之调用zlib

Qt调用zlib的例子,详见博文:http://blog.csdn.net/caoshangpa/article/details/78528930

2017-11-14

Qt Quick实现九宫格锁屏视图

九宫格划指锁屏视图 Lisence: MIT, 请保留本文档说明 Author: surfsky.cnblogs.com 2015-02

2017-11-14

QML实现图像处理,包括浮雕、锐化等效果

使用 Qt Quick 实现的图像处理实例,支持黑白、锐化、底片、柔化、灰度、浮雕等特效。展示 Qt 中 QML 与 C++ 混合编程技术、多线程、自定义事件等关键技术。 原作者:foruok

2017-11-14

Qt插件调用实例

实例讲解Qt如何实现插件的调用,详见博客:http://blog.csdn.net/caoshangpa/article/details/78506322

2017-11-11

重构-改善既有代码的设计 高清pdf 带书签

重构-改善既有代码的设计 高清pdf 带书签

2017-07-16

程序员必读之软件架构 高清pdf 带书签

程序员必读之软件架构 高清pdf 带书签

2017-07-16

c++获取OpengL版本号的两种方法

源码,没啥说的

2017-06-02

WebRTC学习之四:最简单的语音聊天

使用WebRTC实现了最简单的语言聊天 详见博客:http://blog.csdn.net/caoshangpa/article/details/53889057

2017-01-10

Qt动画效果展示

展示了Qt动画的使用,效果非常炫 详见博客:http://blog.csdn.net/caoshangpa/article/details/53964789

2017-01-01

WebRTC学习之三:录音和播放

使用WebRTC C++实现的录音与播放功能,界面用的Qt。 详见博客:http://blog.csdn.net/caoshangpa/article/details/53446916

2016-12-26

VC实现单文档切分窗口

VC实现单文档切分窗口

2016-12-03

VC通过DirectShow进行视频预览和捕获

VC通过DirectShow进行视频预览和捕获

2016-12-03

VC局域网象棋对战(毕业设计)

VC局域网象棋对战(毕业设计),含设计文档

2016-12-03

PDF密码移除工具

PDF密码移除工具,非常好用

2016-12-03

Qt之实现遮罩窗口,实现了窗口遮罩效果

参考链接:https://blog.csdn.net/caoshangpa/article/details/53053409

2022-07-24

QHVlcPlayer.rar

Qt+libVLC,使用QWidget和QOpenGLWidget两种方式渲染:详见博客https://blog.csdn.net/caoshangpa/article/details/114182802

2021-02-27

Qt+libVLC+QWidget渲染

从libVLC中抽帧,然后用QWidget渲染,详见博客:https://blog.csdn.net/caoshangpa/article/details/114171203

2021-02-27

Qt调用libVLC实现播放器

可以播放本地文件和网络url,详见博客:https://blog.csdn.net/caoshangpa/article/details/114156273

2021-02-26

TestUI.rar

Qt换肤详见博客: https://blog.csdn.net/caoshangpa/article/details/51476644 https://blog.csdn.net/caoshangpa/article/details/51527121

2021-02-09

QHOpenGLPlayer.rar

使用QOpenGLWidget渲染yuv420p,详见博客:https://blog.csdn.net/caoshangpa/article/details/112448207

2021-01-10

Qt使用SDL2\D3D渲染YUV420p

Qt使用SDL2\D3D渲染YUV420p

2021-01-09

基于Qt和SDL2播放PCM

基于Qt和SDL2播放PCM,参考博客:https://blog.csdn.net/caoshangpa/article/details/112226484

2021-01-05

QML实现点赞送礼物效果

Qt5 QML实现,详见博客:https://blog.csdn.net/caoshangpa/article/details/112195530

2021-01-04

Qt5版NeHe OpenGL教程6-10

Qt5版Nehe OpenGL教程,第六课到第十课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80323712

2018-05-17

Qt5版Nehe OpenGL教程1-5

Qt5版Nehe OpenGL教程,第一课到第五课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80270855

2018-05-14

VS2017各版本下载器

VS2017各版本下载器,包括vs_Community,vs_Enterprise,vs_Professional

2018-05-13

Qt4版NeHe OpenGL教程 源码

Qt4版NeHe OpenGL教程 源码,NeHe的教程虽然时间久远,但是仍然是入门的好教程,至少对三维概念的了解很有帮助。

2018-05-12

Qt调用OpenGL API实现彩色旋转立方体

详见博客:https://blog.csdn.net/caoshangpa/article/details/80258907 源码中包含了glu和glut等库

2018-05-09

串口调试助手

串口调试助手,自己用的,还不错。可以设置16进制发送和接收。

2018-03-16

MyTcpClient

Qt实现的TCP客户端,用于和State Thread库的Server例子进行调试。详见博客:http://blog.csdn.net/caoshangpa/article/details/79582873

2018-03-16

Boost.Asio C++ Network Programming随书源码

Boost.Asio C++ Network Programming随书源码,书的下载链接:http://download.csdn.net/download/caoshangpa/10229882

2018-01-29

Boost.Asio C++ Network Programming(高清,带书签,可复制)

Boost.Asio C++ Network Programming(高清,带书签,可复制)

2018-01-29

Effective Modern C++ 英文原版(带书签)

Effective Modern C++ 英文原版(带书签),稍微有点英语基础就可以看懂,C++11和C++14学习必备

2018-01-27

Qt之绘制灵动的小鱼

使用Qt绘制的小鱼,用到了很多算法,包括贝塞尔曲线等,非常值得学习借鉴

2018-01-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除