QT-------------对话框和多窗口程序设计
一、标准对话框
1. QFileDialog 对话框
- 功能:提供文件选择对话框,方便用户选择文件或目录。
#include <QApplication>
#include <QFileDialog>
#include <QMessageBox>int main(int argc, char *argv[])
{QApplication app(argc, argv);QString fileName = QFileDialog::getOpenFileName(nullptr, "Open File", QDir::homePath(), "All Files (*.*)");if (!fileName.isEmpty()) {QMessageBox::information(nullptr, "File Selected", "You selected: " + fileName);}return app.exec();
}
- 代码解释:
QFileDialog::getOpenFileName
用于打开文件选择对话框,参数依次为:父窗口、对话框标题、起始目录、文件过滤器。- 如果用户选择了文件(
fileName
不为空),将弹出消息框显示选择的文件路径。
2. QColorDialog 对话框
- 功能:允许用户选择颜色。
#include <QApplication>
#include <QColorDialog>
#include <QPushButton>
#include <QWidget>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);QPushButton *button = new QPushButton("Choose Color");QObject::connect(button, &QPushButton::clicked, [&]() {QColor color = QColorDialog::getColor(Qt::white, &window);if (color.isValid()) {QMessageBox::information(&window, "Color Selected", "Color: " + color.name());}});layout->addWidget(button);window.show();return app.exec();
}
- 代码解释:
- 创建一个按钮,点击按钮时弹出
QColorDialog
。 - 使用
QColorDialog::getColor
获取用户选择的颜色,若有效则显示颜色名称。
- 创建一个按钮,点击按钮时弹出
3. QFontDialog 对话框
- 功能:允许用户选择字体。
#include <QApplication>
#include <QFontDialog>
#include <QPushButton>
#include <QWidget>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);QPushButton *button = new QPushButton("Choose Font");QObject::connect(button, &QPushButton::clicked, [&]() {QFont font = QFontDialog::getFont(nullptr);if (font.isValid()) {QMessageBox::information(&window, "Font Selected", "Font: " + font.family());}});layout->addWidget(button);window.show();return app.exec();
}
- 代码解释:
- 创建一个按钮,点击按钮时弹出
QFontDialog
。 - 使用
QFontDialog::getFont
获取用户选择的字体,若有效则显示字体族名称。
- 创建一个按钮,点击按钮时弹出
4. QProgressDialog 对话框
- 功能:显示进度条,常用于长时间操作时向用户显示进度。
#include <QApplication>
#include <QProgressDialog>
#include <QTimer>int main(int argc, char *argv[])
{QApplication app(argc, argv);QProgressDialog progress("Progress", "Cancel", 0, 100);progress.setWindowTitle("Progress Dialog");QTimer timer;int value = 0;QObject::connect(&timer, &QTimer::timeout, [&]() {value++;progress.setValue(value);if (value >= 100) {timer.stop();progress.setValue(100);}});timer.start(100);progress.exec();return app.exec();
}
- 代码解释:
- 创建
QProgressDialog
并设置范围。 - 使用
QTimer
模拟进度更新,每秒更新一次进度,直到达到 100。
- 创建
5. QMessageBox 消息对话框
- 功能:用于显示消息、询问用户等。
#include <QApplication>
#include <QMessageBox>int main(int argc, char *argv[])
{QApplication app(argc, argv);QMessageBox::information(nullptr, "Message", "This is an information message");QMessageBox::question(nullptr, "Question", "Do you want to continue?", QMessageBox::Yes | QMessageBox::No);return app.exec();
}
- 代码解释:
QMessageBox::information
显示信息消息。QMessageBox::question
显示询问对话框,用户可选择是或否。
二、设计和使用自定义对话框
1. QDialog 类
- 功能:是所有对话框的基类,可以自定义对话框类。
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QPushButton>class CustomDialog : public QDialog
{
public:CustomDialog(QWidget *parent = nullptr) : QDialog(parent){QVBoxLayout *layout = new QVBoxLayout(this);QPushButton *button = new QPushButton("Close", this);connect(button, &QPushButton::clicked, this, &QDialog::accept);layout->addWidget(button);}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);CustomDialog dialog;if (dialog.exec() == QDialog::Accepted) {// 用户点击关闭按钮}return app.exec();
}
- 代码解释:
- 自定义
CustomDialog
类,包含一个按钮。 - 点击按钮调用
accept
关闭对话框,根据exec
的返回值判断对话框的关闭状态。
- 自定义
2. TDialogHeaders 对话框设计和使用(示例)
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QPushButton>
#include <QHeaderView>class TDialogHeaders : public QDialog
{
public:TDialogHeaders(QWidget *parent = nullptr) : QDialog(parent){QVBoxLayout *layout = new QVBoxLayout(this);QPushButton *button = new QPushButton("Apply Headers", this);connect(button, &QPushButton::clicked, this, &QDialog::accept);layout->addWidget(button);// 可添加更多自定义组件,如 QHeaderView 相关设置}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);TDialogHeaders dialog;if (dialog.exec() == QDialog::Accepted) {// 用户点击 Apply Headers 按钮}return app.exec();
}
- 代码解释:
- 创建自定义对话框,可添加
QHeaderView
等组件进行更多自定义操作。
- 创建自定义对话框,可添加
3. TDialogLocate 对话框设计和使用(示例)
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>class TDialogLocate : public QDialog
{
public:TDialogLocate(QWidget *parent = nullptr) : QDialog(parent){QVBoxLayout *layout = new QVBoxLayout(this);QLineEdit *lineEdit = new QLineEdit(this);QPushButton *button = new QPushButton("Locate", this);connect(button, &QPushButton::clicked, this, &QDialog::accept);layout->addWidget(lineEdit);layout->addWidget(button);// 可添加更多自定义逻辑,如处理 lineEdit 输入}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);TDialogLocate dialog;if (dialog.exec() == QDialog::Accepted) {// 用户点击 Locate 按钮}return app.exec();
}
- 代码解释:
- 创建自定义对话框,包含
QLineEdit
和按钮,可根据输入进行相应操作。
- 创建自定义对话框,包含
三、多窗口应用程序设计
1. 窗口类重要特性的设置
- 可设置窗口的标题、大小、位置、可见性等属性。
#include <QApplication>
#include <QWidget>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window1;window1.setWindowTitle("Window 1");window1.resize(300, 200);window1.move(100, 100);window1.show();QWidget window2;window2.setWindowTitle("Window 2");window2.resize(300, 200);window2.move(500, 100);window2.show();return app.exec();
}
- 代码解释:
- 创建两个窗口,设置不同的标题、大小和位置并显示。
2. 多窗口应用程序设计
- 可以创建多个窗口并在它们之间进行交互。
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QDialog>class MainWindow : public QMainWindow
{
public:MainWindow(){QPushButton *button = new QPushButton("Open Dialog", this);setCentralWidget(button);connect(button, &QPushButton::clicked, this, [=]() {QDialog dialog(this);dialog.setWindowTitle("Dialog");dialog.exec();});}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);MainWindow mainWindow;mainWindow.show();return app.exec();
}
- 代码解释:
- 主窗口包含一个按钮,点击按钮打开一个对话框。
设计用例
- 可以将上述不同的对话框和多窗口设计组合使用,例如:
- 主窗口打开文件对话框选择文件。
- 使用自定义对话框进行数据输入或设置。
- 显示进度对话框进行长时间操作的进度显示。
相关文章:
QT-------------对话框和多窗口程序设计
一、标准对话框 1. QFileDialog 对话框 功能:提供文件选择对话框,方便用户选择文件或目录。 #include <QApplication> #include <QFileDialog> #include <QMessageBox>int main(int argc, char *argv[]) {QApplication app(argc, a…...
信息科技伦理与道德2:研究方法
1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…...
Linux(Centos 7.6)命令详解:ls
1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l,long list 使用长列表格式-a,all 不忽略.开头的条目(打印所有条目,包括.开头的隐藏条目)…...
深入理解 WebSocket:实时通信的基础
随着互联网技术的不断发展,实时通信逐渐成为现代应用程序中不可或缺的一部分。无论是即时通讯应用、在线游戏、社交平台还是股票交易系统,都需要能够在客户端与服务器之间快速、高效地传输数据。传统的 HTTP 协议虽然简单且广泛应用,但它并不…...
【网络协议】开放式最短路径优先协议OSPF详解(一)
OSPF 是为取代 RIP 而开发的一种无类别的链路状态路由协议,它通过使用区域划分以实现更好的可扩展性。 文章目录 链路状态路由协议OSPF 的工作原理OSPF 数据包类型Dijkstra算法、管理距离与度量值OSPF的管理距离OSPF的度量值 链路状态路由协议的优势拓扑结构路由器O…...
2000-2020年各省地区生产总值数据/各省gdp数据
2000-2020年各省地区生产总值数据/各省gdp数据 1、时间:2000-2020年 2、来源:国家统计局 3、指标:行政区划代码、地区、年份、地区生产总值 4、范围:31省 指标解释:地区生产总值(Regional GDP…...
消息转换器在SpringMVC执行流程
消息转换器的工作机制 内部工作流程 读取(Read)操作 当接收到一个包含实体内容的HTTP请求时,Spring MVC会根据请求头中的Content-Type属性来确定应该使用哪个HttpMessageConverter来解析请求体。DispatcherServlet会遍历已注册的HttpMessage…...
7. C语言 运算符详解
本章目录: 前言C语言运算符的分类1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 杂项运算符 运算符优先级 前言 在C语言中,运算符是程序中执行各种操作的核心工具,涉及算术运算、逻辑判断、位操作等多个方面。掌握C语言中的各种运…...
一、准备工作(2):部署TensorFlow和Keras
目录 一、确保已安装 Python 和 pip 二、打开命令行界面并执行安装命令 Windows macOS 和 Linux 三、安装过程中的注意事项 创建虚拟环境 激活虚拟环境 在虚拟环境中安装包 四、验证安装 五、常见问题排查 六、下一步 pip install tensorflow keras 是一个用于在计算…...
Rabbitmq Fanout如何保证不重复消费及应用场景
rabbitmq fanout业务场景,一个交换机对应多个队列,不会重复消费吗 在 RabbitMQ 中,使用 Fanout 类型的交换机时,确实可以将一个交换机绑定到多个队列。每当有消息发布到这个交换机时,交换机会把消息广播到所有绑定的队…...
【Linux系列】使用 `nohup` 命令运行 Python 脚本并保存输出日志的详细解析
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
基于Python的考研学习系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
多模态大模型文生图和图生文的主要技术
1 图生文 CLIP 该模型架构由图像编码器和文本编码器组成。图像编码器将图像转换为嵌入(数字列表),文本编码器将文本转换为嵌入。 这两个编码器在成批的图像-文本对上进行训练,其中文本描述图像。编码器的训练方式如下࿱…...
云架构:考量与框架
云架构:考量与框架 引言 在当今的数字化环境中,云计算已成为现代商业运营的基石。一个设计良好的云架构框架为可扩展、安全和弹性的系统奠定了基础。本文将深入探讨云架构的核心要素,讨论重要的考量因素、设计指南,以及最佳实践…...
用uniapp写一个播放视频首页页面代码
效果如下图所示 首页有导航栏,搜索框,和视频列表, 导航栏如下图 搜索框如下图 视频列表如下图 文件目录 视频首页页面代码如下 <template> <view class"video-home"> <!-- 搜索栏 --> <view class…...
开发培训-慧集通(iPaaS)集成平台脚本开发Groovy基础培训视频
Groovy是一种基于Java虚拟机(JVM)的敏捷开发语言,结合了Python、Ruby和Smalltalk的许多强大特性。它旨在提高开发者的生产力,通过简洁、熟悉且易于学习的语法,Groovy能够与Java代码无缝集成,并提供强大…...
供需平台信息发布付费查看小程序系统开发方案
供需平台信息发布付费查看小程序系统主要是为了满足个人及企业用户的供需信息发布与匹配需求。 一、目标用户群体 个人用户:寻找兼职工作、二手物品交换、本地服务(如家政、维修)等。 小微企业:推广产品和服务,寻找合…...
【Qt】如何保证线程安全(以日志写入为例)
前言 在近日学习中发现,如果开发一个单例模式的日志系统,难免会出现多个线程记录日志的情况,这个时候线程可能导致竞争,或者始料未及的情况发生。 通过学习,如果要保证线程安全,要使用互斥锁QMutex…...
k8s基础(3)—Kubernetes-Deployment
一、 Deployment概述 Kubernetes Deployment是Kubernetes中的一个核心概念,它是一种高级别的控制器,用于管理Pod和ReplicaSet,确保应用程序的高可用性和稳定性。Deployment通过声明式配置来创建和更新Pod和ReplicaSet,从而…...
信息系统管理师试题-人力资源
下列( )不属于人力资源管理的主要工作内容。 A根据各工作岗位任务的特点和工作要求,预测组织的人力需求 B根据工作需要,选拔出符合组织需要的员工 C对新员工进行工作指导和培训 D为项目团队争取和募集更多资金 答案D 解析…...
【情感】程序人生之情感关系中的平等意识(如何经营一段长期稳定的关系 沸羊羊舔狗自查表)
【情感】程序人生之情感关系中的平等意识(如何经营一段长期稳定的关系 & 沸羊羊舔狗自查表) 文章目录 1、情感关系中的平等意识2、如何经营一段长期稳定的关系(避免左倾 | 敬畏与担当)3、沸羊羊/舔狗自查表(避免右…...
pyspark执行group by操作
前情提要 在处理亿级别数据时,常常输入是hive表,因此需要在pypark流程中引入一些场景sql操作,其中group by就是比较常见的操作。 基础步骤 创建SparkSession:通过enableHiveSupport()方法启用Hive支持,确保能够访问…...
小寒时处在二三九,天寒地冻北风吼
今(1月5日上午10时33分)天迎来了小寒节气,本“人民体验官”推广人民日报官方微博文化产品《小寒来了!最冷的时候如何养生防病》,同时科普小寒相关知识。 截图:来源本“人民体验官”推广平台 人民微博告诉我…...
微信小程序校园自助点餐系统实战:从设计到实现
随着移动互联网的发展,越来越多的校园场景开始智能化、自助化。微信小程序凭借其轻量化、便捷性和强大的生态支持,成为了各类校园应用的首选工具之一。今天,我们将通过实际开发一个微信小程序“校园自助点餐系统”来展示如何设计和实现这样一…...
java基础之代理
代理模式(Proxy Pattern) 简介 是一种结构型设计模式,主要用于为某对象提供一个代理对象,以控制对该对象的访问。通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介,负责将客户端的…...
uniapp - 基于uniapp+vue3实现自定义增强版table表格组件体验「兼容H5+小程序+App端」
本文提供增强版table表格组件体验,打造跨端表格的新标杆. uv3-table:一款基于uniappvue3跨端自定义手机端增强版表格组件。支持固定表头/列、边框、斑马纹、单选/多选,自定义表头/表体插槽、左右固定列阴影高亮显示。支持编译兼容H5小程序端App端。 提供…...
【Obsidian插件开发】新建窗口时出现多余的空白窗口
问题描述 在打开Edit Task的Modal的时候,有一个多余的空白modal同时也被打开了,并且点右上角的叉号可以把Edit Task窗口也关上。最开始没有这个问题,我给edit task窗口加了css,移动位置之后问题就出现了。 解决方法 我最开始看到…...
springmvc--请求参数的绑定
目录 一、创建项目,pom文件 二、web.xml 三、spring-mvc.xml 四、index.jsp 五、实体类 Address类 User类 六、UserController类 七、请求参数解决中文乱码 八、配置tomcat,然后启动tomcat 1. 2. 3. 4. 九、接收Map类型 1.直接接收Map类型 &#x…...
前缀和与差分专题
领地选择 (二维前缀和) 作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。 首都被认为是一个占地 CC 的正方形。小 Z 希望你寻…...
Go Ebiten小球弹性碰撞代码示例
Go Ebiten小球弹性碰撞代码示例 我们来编写一个简单的示例程序,在其中实现一个小球在窗口中弹性碰撞的效果。具体来说,当小球碰到窗口的边缘时,它会反弹回来,改变运动方向。我们将使用Ebiten的图形和物理模拟功能来实现这个效果。…...
C++中map和set的封装
一、关于封装过程中传入的模板参数的问题 通过源码中的封装方式进行理解: 1.1map和set中成员变量 set中: template <class Key, class Compare less<Key>, class Alloc alloc> class set { public:typedef Key key_type;typedef Key v…...
dsa introduction 3
空间复杂度一般不会超过时间复杂度。空间复杂度就是申请的空间的数量级别。 减治和分治都是算法策略。都可以用递归和迭代的手段去实现。递归就是函数自己调用自己。一直到递归基之后再返回。递归算法的空间复杂度是递归深度。分治是分别求解子问题,然后由子问题的…...
C++ 日志库 spdlog 使用教程
Spdlog是一个快速、异步、线程安全的C日志库,他可以方便地记录应用程序的运行状态,并提供多种输出格式。官网:https://github.com/gabime/spdlog 安装教程可以参考:https://blog.csdn.net/Harrytsz/article/details/144887297 S…...
Pytorch机器学习——1 深度学习介绍
outline 人工智能、机器学习与深度学习深度学习工具介绍 1. 人工智能、机器学习与深度学习 AI:研究如何能让计算机模拟人类的智能,来实现特定的依赖人类智能才能实现的任务(例如学习、语言、识别) AI历史: 1818&#x…...
软件工程期末大复习(六)面向对象分析
6.1 软件分析概述 软件分析是软件开发生命周期中的一个关键阶段,它紧随需求收集之后。在这个阶段,分析者的目标是理解用户的需求,并确定系统应该做什么。 需求分析:分析用户的需求,确定系统必须实现的功能。概念性设计…...
科研绘图系列:R语言科研绘图之标记热图(heatmap)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息参考介绍 科研绘图系列:R语言科研绘图之标记热图(heatmap) 加载R包 library(tidyverse) library(ggplot2) library(reshape)…...
数据挖掘——朴素贝叶斯分类
数据挖掘——朴素贝叶斯分类 朴素贝叶斯分类极大后验假设独立性假设贝叶斯分类器总结 朴素贝叶斯分类 什么是分类? 找出描述和区分数据类或概念的模型,以便能够使用模型预测未知的对象的类标号 概念区分 分类与回归 分类是预测分类(离散、…...
Redis数据库笔记—— Hash(哈希)的扩容机制(rehash)
大家好,这里是Good Note,关注 公主号:Goodnote,专栏文章私信限时Free。详细介绍Hash(哈希)的扩容机制(rehash)、源码、以及扩容和缩容过程。 文章目录 Redis 字典(dict)结构源码哈希…...
【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历
明天开始考试周,百无聊赖开了一把CTF,还顺带体验了下二开工具,让无聊的Z3很开心🙂 CachedVisitor这题 大概描述一下:从main.lua加载一段visit.script中被##LUA_START##(.-)##LUA_END##包裹的lua代码 main.lua loca…...
面向对象分析与设计Python版 建模工具UML
文章目录 一、建模与模型二、统一建模语言 一、建模与模型 建模与模型 建模 modeling: 把不太理解的东西和一些已经较为理解、且十分类似的东西做比较,可以对这些不太理解的东西产生更深刻的理解,叫做建模重要的研发成果常常产自类比 模型 …...
Flink系列知识讲解之:深入了解 Flink 的网络协议栈
Flink系列知识之:深入了解 Flink 的网络协议栈 Flink 的网络协议栈是组成 flink-runtime 模块的核心组件之一,也是每个 Flink 任务的核心。它连接着来自所有任务管理器的各个工作单元(子任务)。这是流数据流过的地方,…...
动态库dll与静态库lib编程4:MFC规则DLL讲解
文章目录 前言一、说明二、具体实现2.1新建项目2.2 模块切换的演示 总结 前言 动态库dll与静态库lib编程4:MFC规则DLL讲解。 一、说明 1.前面介绍的均为Win32DLL,即不使用MFC的DLL。 2.MFC规则DLL的特点:DLL内部可以使用MFC类库、可以被其他…...
TypeScript 后端开发中的热重载编译处理
在一些除了nest框架外的一些其他nodejs框架中没有提供对ts编译和热重载,如果使用typescript我们需要自己进行配置。 方法一(推荐) 使用bun运行环境(快)。注:一些不是使用js,ts代码编写的第三方…...
ORB-SLAM3源码学习:LoopClosing.cc:LoopClosing::NewDetectCommonRegions检测共同区域
前言 在ORB-SLAM2中校验闭环候选关键帧时,需要满足时序上连续3次成功校验才能通过。这就需要检测至少3个新进来的关键帧,这种方法牺牲了召回率来提升精度。由于必须严格的满足至少连续的三个条件这使得闭环的条件更加严格,即使存在真实的闭环…...
前端React Router从入门到进阶实战
React Router 是 React 应用中的一个重要库,它用于实现客户端的路由管理,能够将 URL 路径与 React 组件关联起来,从而实现页面之间的导航。React Router 不会像传统的多页面应用那样重新加载页面,而是通过组件切换来呈现不同的视图…...
关于华硕Armoury Crate(奥创中心)安装程序失败、卡进度条问题解决方案
关于华硕Armoury Crate(奥创中心)安装失败解决方案 清理旧版本文件 如果之前安装过Armoury Crate,可能有残留文件导致冲突: 利用官方的卸载工具,卸载旧版本: https://www.asus.com.cn/supportonly/armoury%20crate/…...
【WPF】 数据绑定机制之INotifyPropertyChanged
INotifyPropertyChanged 是 WPF 中的一个接口,用于实现 数据绑定 中的 属性更改通知。它的主要作用是,当对象的某个属性值发生更改时,通知绑定到该属性的 UI 控件更新其显示内容。 以下是有关 INotifyPropertyChanged 的详细信息和实现方法&…...
QPushButton的基础用法
概述 本文将详细介绍 QPushButton 的概念、常规用法、样式表以及一些特殊用法,帮助您深入理解和高效应用 QPushButton。当前Qt版本为6.8。 1. QPushButton 的基本概念 1.1 概述 QPushButton 是 Qt 中最常用的按钮控件之一,它表示一个可以被点击的按钮…...
股指期货有哪些优势?
股指期货,作为一种重要的金融衍生品,以其独特的交易方式和多样的优势,吸引了众多投资者的关注。本文将详细解析股指期货的定义、优势以及特点,帮助投资者更好地理解和把握这一市场。 一、股指期货的定义 股指期货,顾…...
STM32完全学习——FATFS0.15移植SD卡
一、下载FATFS源码 大家都知道使用CubMAX可以很快的将,FATFS文件管理系统移植到单片机上,但是别的芯片没有这么好用的工具,就需要自己从官网下载源码进行移植。我们首先解决SD卡的驱动问题,然后再移植FATFS文件管理系统。 二、SD…...