VS环境下Qt版本切换与Qt VS Tools配置全攻略

【QT+VS】如何在现有VS项目中添加Qt界面?【全网最详细】 VS项目有了,就缺个QT界面,怎么办呢?这篇文章帮你一键搞定! 阅读详情

1. 为什么你的Qt项目在VS里总报错?先搞懂版本匹配

你是不是也遇到过这种情况?在Visual Studio里新建了一个Qt项目,满心欢喜地点击“生成”,结果编译器直接给你泼了一盆冷水,弹出一堆看不懂的错误,最常见的就是那个“There‘s no Qt version assigned to project”。我刚开始用VS配合Qt开发的时候,这个问题几乎每次换电脑或者重装环境都要来一遍,头大得很。后来折腾多了才明白,这问题的根子,十有八九出在Qt版本、Visual Studio版本和编译器(MSVC)版本这三者没对上。

你可以把这三者想象成乐高积木。Qt是你要搭建的城堡主体,Visual Studio是你的工具箱,而MSVC编译器则是你手里的那把螺丝刀。如果你的螺丝刀型号(比如十字PH2)和乐高积木上的螺丝孔(比如内六角)不匹配,那你肯定搭不起来。在Windows上用VS开发Qt,最常见的组合就是Qt的MSVC套件和Visual Studio自带的MSVC编译器。比如,你从Qt官网下载安装的是 Qt 5.15.2 的 msvc2019_64 版本,那你就必须使用 Visual Studio 2019 或者更高版本(因为VS2022也兼容MSVC2019的工具集),并且项目属性里配置的“平台工具集”也得是 Visual Studio 2019 (v142) 这一档。如果你不小心用VS2022打开了这个项目,但工具集选成了v143,或者你Qt安装的是msvc2017_64,那对不起,版本对不上,项目肯定编译不过。

所以,在动手配置之前,第一件事就是自查版本。打开你的Qt安装目录,通常路径像 C:\Qt\,进去看看你究竟装了哪些版本,每个版本下又有哪些编译器套件。同时,打开你的Visual Studio,在“帮助” -> “关于Microsoft Visual Studio”里确认你的VS版本号。记住这个对应关系:Qt的msvc版本号,要小于或等于你VS的版本号所携带的MSVC工具集版本。比如msvc2017对应VS2017或更高,msvc2019对应VS2019或更高。搞清楚这个,你就成功了一半。

2. 第一步:安装与配置Qt VS Tools插件

工欲善其事,必先利其器。想在Visual Studio里舒服地开发Qt程序,Qt VS Tools 这个官方插件是必不可少的。它就像是VS和Qt之间的桥梁,提供了创建Qt项目、管理Qt版本、设计UI(会调用Qt Designer)等一系列贴心功能。安装它其实很简单,但有些细节不注意,后面就会踩坑。

最推荐的方式是直接在VS内部安装。打开你的Visual Studio,在上方菜单栏找到 “扩展” -> “管理扩展”。在弹出的窗口左侧选择 “联机”,然后在右上角的搜索框里输入 “Qt”

Vs2019安装---QT vs TOOLS的方法及出错原因 一 ,下载安装方式 1.点击窗体菜单栏 《扩展》-> 《管理扩展》-> 点击下载 QT vs TOOLS 想要的直接就能安装 我这是19版本下载 二,官网下载安装包 你所了解你用的vs版本适合哪个QT插件的版本 到官网自己找相对版本下载 ---------下载地址---------- https://download.qt.io/development_releases/vsaddin/ 下载之后是一个后缀.vsix 的执行文件 把vs程序关闭 然后点击你下载的包 阅读详情

相关推荐

Qt VS Tools配置全攻略:从安装到解决‘No Qt version assigned’报错

本文详细介绍了Qt开发环境配置的全流程,重点解决‘No Qt version assigned’报错问题。从Qt与Visual Studio的版本匹配、组件安装到项目属性配置,提供了系统性的解决方案和高级调试技巧,帮助开发者快速搭建稳定的Qt开发环境。

weixin_30776273的博客 457

Qt VS Tools配置全攻略:从安装到解决‘No Qt version assigned‘错误

本文详细介绍了Qt开发环境在Visual Studio中的配置方法,重点解决'No Qt version assigned'等常见错误。从Qt本体安装、VS Tools集成到版本匹配验证,提供完整的配置流程和疑难解析,帮助开发者高效搭建Qt开发环境并解决项目报错问题。

weixin_33670786的博客 413

VS2017配置Qt开发环境:从版本对齐到项目部署全攻略

在C++桌面应用开发中,跨平台GUI框架与成熟IDE的集成是提升开发效率的关键。Qt作为跨平台应用开发框架,其信号槽机制与丰富的UI组件库,为构建现代化桌面界面提供了强大支持。Visual Studio作为Windows平台主流的集成开发环境,凭借其强大的调试器和智能感知功能,在大型项目协作与工程实践中占据重要地位。将Qt与Visual Studio结合,既能利用Qt的跨平台能力,又能享受VS在Windows原生开发中的生态优势,尤其适用于需要维护既有Visual Studio工程文件的大型项目。本文聚焦于

weixin_31286719的博客 295

VS2017与QT插件安装配置全攻略

在C++开发中,Visual Studio与QT的结合是常见的开发环境配置。然而,安装过程中的高失败率和配置不当导致的编译错误是开发者常遇到的痛点。通过工程化的解决思路,可以有效提升安装成功率和编译通过率。本文从环境准备、安装避坑、插件配置到工程优化,提供了一套完整的解决方案。特别针对VS2017安装失败和QT插件配置问题,给出了详细的步骤和技巧,帮助开发者快速搭建稳定的开发环境。

weixin_42619742的博客 277

QT6+VS2022开发环境配置全攻略:从在线安装到环境变量设置

本文详细介绍了在Windows系统下配置Qt6与Visual Studio 2022集成开发环境的完整流程。通过使用国内镜像源进行在线安装,可高效获取所需组件,并重点讲解了为VS2022安装Qt插件、配置Qt版本路径以及设置QTDIR和PATH环境变量的关键步骤,确保开发者能顺利完成开发环境搭建并创建首个Qt项目进行验证。

gitlab7runner的博客 520

QT6+VS2022开发环境配置避坑指南:国内镜像源加速安装全流程

本文详细介绍了QT6与VS2022开发环境配置的全流程,重点讲解了如何利用国内镜像源加速安装过程,解决常见问题如缓存错误、组件缺失等,并提供了VS2022集成配置和环境优化的实用技巧,帮助开发者高效搭建C++开发环境。

weixin_42523326的博客 445

Windows平台Qt安装配置全攻略:从版本选择到环境验证

跨平台应用程序框架是构建可在多个操作系统上运行的软件的基础,其核心在于提供统一的API和工具链。在C++开发领域,Qt作为成熟的跨平台框架,通过封装系统原生API并提供丰富的模块库,实现了“一次编写,到处编译”的目标。其技术价值在于显著提升了GUI应用程序的开发效率与可维护性,尤其适用于需要同时支持Windows、macOS和Linux的桌面软件、嵌入式界面及移动端应用。在Windows平台上部署Qt开发环境时,开发者常面临编译器选型(如MinGW-w64与MSVC的区别)、组件定制及环境变量配置等具体挑战

weixin_30701575的博客 382

VS2019与QT插件安装全攻略:从下载到排错

本文详细介绍了在VS2019中安装QT插件的完整流程,包括准备工作、两种安装方法(通过扩展管理器直接安装和手动下载.vsix文件安装)以及常见问题的解决方案。文章特别强调了版本匹配和路径设置的重要性,并提供了高级配置技巧,帮助开发者高效使用QT插件进行项目开发。

weixin_30338481的博客 485

FNF模组开发入门:Qt环境配置与编辑器搭建全攻略

在游戏模组开发领域,图形用户界面(GUI)框架是构建高效创作工具的核心。Qt作为一款成熟的跨平台C++ GUI框架,其原理在于通过封装底层系统调用,提供统一的组件库和信号槽机制,实现快速、稳定的桌面应用开发。这一技术价值在于极大降低了开发可视化编辑工具的门槛,使开发者能专注于业务逻辑而非界面细节。在《Friday Night Funkin'》(FNF)等节奏游戏模组开发场景中,社区常利用Qt构建关卡编辑器、谱面编辑器等辅助工具,用于直观地编排音符、配置资源,从而将创意高效转化为游戏可读的数据文件。本文聚焦于

weixin_30301449的博客 513

在Cursor中配置C++与Qt开发环境:从基础搭建到高效调试全攻略

C++作为高性能系统开发的核心语言,其开发环境的配置是项目成功的基础。现代C++项目通常依赖CMake等构建工具管理复杂的编译流程,而Qt框架则为跨平台GUI应用开发提供了强大支持。在工程实践中,一个稳定、高效的开发环境能显著提升代码编写、构建和调试的效率。随着AI辅助编程工具的兴起,开发者开始寻求将传统开发流程与智能编辑器深度结合。本文聚焦于在Cursor编辑器中,系统性地配置C++与Qt集成开发环境,涵盖编译器设置、CMake配置、Qt库链接以及IntelliSense调试等关键环节,并分享如何利用Cu

csxc65837的博客 325

2025最新!Visual Studio 2022 + Qt6.7 环境配置全攻略:从安装到实战

本文提供了一份详尽的Visual Studio 2022与Qt6.7在Windows平台上的环境配置全攻略。从软件安装、插件配置到实战项目创建,手把手指导开发者避开常见陷阱,实现高效开发。内容涵盖组件选择、镜像加速、信号槽连接及部署发布等关键步骤,助你快速搭建强大的C++ GUI开发环境。

pink的博客 955

qt vs tools

当我们使用qt vs tools之后,就可以在vs中创建qt的工程,最终落地的还是一个vs的vcxproj工程。 这样以来,下次打开vcxproj工程的时候,在vcxproj工程中会有一个地方有携带了qt的版本信息。 如下图所示: 上图表示我们用另一台电脑(电脑B)上的vs编译这个工程的代码的时候,需要在电脑B上给B上的vs配置qt vs tools管理的qt版本。要求要和当前电脑(电脑A)的配置一样。 电脑A的配置如下: 上图仅仅展示了win32的情况,这就说明了B电脑也要添加一个qt.

C++ 爱好者 make_it_simple888 3416

PyTorch复现EEG-TCNet踩坑记:从BCI IV2a数据到TCN块缺失的完整解决方案

本文详细解析了使用PyTorch复现EEG-TCNet模型的全过程,重点解决了BCI IV2a数据集预处理和TCN模块缺失的技术难题。通过标准化数据流程、跨受试者验证策略以及三种因果卷积实现方案,为运动想象分类任务提供完整解决方案,帮助研究者高效实现模型复现与优化。

weixin_30699955的博客 315

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

ACGkaka的博客 6973

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告

据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。

MARKETRESEARCH的博客 1130

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6027

【四季发财中线】通达信炒股指标副图指标使用图文教程,短线紫色柱线操作,与中线短柱线共振抓牛股妖股主升浪

如上图标记位置,对应的是副图指标的紫色柱线开始的位置,这个紫色柱线信号开始出现,也是短线进场做多的信号,紫色柱线的持续出现和加长,可以持股待涨,或行情继续上涨的可以在分时行情中逢低进场短线顺势做多。如上图标记部分,指标的主要部分信号,三行柱线-ZR-ZC -ZM,当出现这三行信号时,中线或波段看多做多,信号持续则中线顺势做多和持股待涨。不论是跟踪信号的出现先后进场和持股,或是在中线多头的行情中,找到短线转多信号进场做安全的短线操作机会,都是非常好的指标信号和辅助操作功能。

weixin_69760830的博客 1586

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 759

Python的单元测试之unittest

是一个功能类似 unittest 的库,它集合众家标准测试库之所长,和 unittest 相比,功能更为强大,使用更为简单,OpenStack 广泛的利用它编写单元测试。unittest 提供了自动匹配发现并执行测试用例的功能,随着项目代码结构越发庞大,势必有多个测试文件,自动匹配发现并测试用例的功能在此就显得非常有用,只要满足。unittest 提供了丰富的命令行入口,可以根据需要执行某些特定的用例。的测试用例都会被 unittest 发现并执行,测试用例文件的默认匹配规则为 test*.py。

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 271

NPC 三电平逆变器中点电位平衡算法详解

最常用:零序电压注入(简单、计算量小)最可靠:虚拟空间矢量调制(VSVPWM)及其改进形式(全范围平衡)趋势:结合模型预测控制(MPC)或智能算法(模糊、神经网络)进一步提升动态性能和鲁棒性。NPC 三电平逆变器中点电位平衡算法的 C# 实现示例(零序电压注入法 + 闭环补偿)在 NPC(Neutral Point Clamped)三电平逆变器中,中点电位平衡最常用且易于软件实现的方案是零序电压注入法。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 315

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: ThinkPHP8实战:如何用think-worker同时搞定TCP、WebSocket和MQTT设备通信(附完整配置)
下一篇: 微雪2.8寸触摸屏开发板ESP-IDF 5.3驱动移植与调试实战
懒狗帮帮主
博客等级 码龄3年 79粉丝 1233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值