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

旅游网站建设与规划网站可以做被告嘛

旅游网站建设与规划,网站可以做被告嘛,陕西华伟建设有限公司网站,怎么样做网站赚钱在Linux和Windows系统下使用Qt监测U盘的插拔事件Chapter1 在Linux系统下使用Qt监测U盘的插拔事件(方法1,使用lsblk命令)方法概述Chapter2 在Linux或者Windows系统下使用Qt监测U盘的插拔事件(方法2,使用QStorageInfo类)1、概述2、重要方法3、重要信号4、试…

在Linux和Windows系统下使用Qt监测U盘的插拔事件

  • Chapter1 在Linux系统下使用Qt监测U盘的插拔事件(方法1,使用lsblk命令)
    • 方法概述
  • Chapter2 在Linux或者Windows系统下使用Qt监测U盘的插拔事件(方法2,使用QStorageInfo类)
    • 1、概述
    • 2、重要方法
    • 3、重要信号
    • 4、试验结果


Chapter1 在Linux系统下使用Qt监测U盘的插拔事件(方法1,使用lsblk命令)

原文链接:https://blog.csdn.net/qq_44849154/article/details/129711381

本文在Qt提供一段监测U盘数量的一段代码,可以监听U盘的插入和拔出,亲测可用。

QStringList Widget::listUSBDevices()
{int i =0;QProcess piTerminal;piTerminal.start("sh",QStringList()<<"-c"<<"lsblk|grep media|grep part|grep -o -E '/.*'");piTerminal.waitForFinished();QString ret=piTerminal.readAllStandardOutput();QStringList list=ret.split("\n");if(list.size()!=1){for(i=0;i<list.size();i++){qDebug()<<list.at(i);//输出U盘的绝对路径ui->textBrowser->append(list.at(i));}ui->textBrowser->append(QString("检测到 %1个U盘").arg(i-1));}if(list.size()==1){qDebug()<<"未检测到U盘插入,请插入后重试";ui->textBrowser->append(QString("未检测到U盘插入,请插入后重试"));}return list;
}

使用Qt监测U盘的插拔事件也可以通过监听DBus信号实现。以下是分步说明和示例代码:

方法概述

  1. 使用DBus监听U盘事件:通过org.freedesktop.UDisks2服务,订阅InterfacesAdded和InterfacesRemoved信号。
  2. 过滤U盘设备:检查信号参数,确定是否为可移动USB存储设备。
  3. 处理挂载信息:通过DBus获取设备的挂载点和其他属性。

Chapter2 在Linux或者Windows系统下使用Qt监测U盘的插拔事件(方法2,使用QStorageInfo类)

原文链接:https://blog.csdn.net/ckg3824278/article/details/143859458

1、概述

QStorageInfo是Qt框架中用于获取和管理存储设备信息的类。它提供了关于当前系统中挂载的存储设备和驱动器的详细信息,包括空间大小、挂载点、标签名、文件系统名等。QStorageInfo类在Qt 5.4版本中引入,为开发人员提供了一个简洁而强大的接口来查询和管理系统中的存储设备信息。

2、重要方法

QStorageInfo类提供了一系列方法来获取存储设备的信息,以下是一些重要的方法:

  • QStorageInfo::mountedVolumes():返回当前系统中所有已挂载文件系统的列表。
  • QStorageInfo::root():返回根文件系统的QStorageInfo对象。
  • QStorageInfo::bytesTotal():返回存储设备的总字节数。
  • QStorageInfo::bytesAvailable():返回存储设备上可用的字节数。
  • QStorageInfo::bytesFree():返回存储设备上的空闲字节数(注意:在某些平台上,bytesFree()和bytesAvailable()可能返回相同的结果)。
  • QStorageInfo::name():返回存储设备的名称。
  • QStorageInfo::displayName():返回存储设备的显示名称。
  • QStorageInfo::fileSystemType():返回存储设备的文件系统类型。
  • QStorageInfo::isReadOnly():判断存储设备是否只读。
  • QStorageInfo::isReady():判断存储设备是否准备就绪。
  • QStorageInfo::isValid():判断QStorageInfo对象是否有效。
  • QStorageInfo::setPath(const QString &path):设置QStorageInfo对象的路径,以引用该路径所在的卷。
  • QStorageInfo::refresh():刷新QStorageInfo对象的信息,使其无效化缓存并重新检索。

3、重要信号

QStorageInfo类是一个静态类,主要提供用于查询存储设备信息的方法,而不涉及信号与槽的机制。因此,QStorageInfo类没有定义任何信号。

#include <QCoreApplication>
#include <QStorageInfo>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 获取当前系统中所有已挂载的文件系统列表QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes();// 遍历列表并打印每个存储设备的信息for (const QStorageInfo &storage : storageInfoList) {if (storage.isValid() && storage.isReady()) {qDebug() << "Name:" << storage.name();qDebug() << "Display Name:" << storage.displayName();qDebug() << "Root Path:" << storage.rootPath();qDebug() << "File System Type:" << storage.fileSystemType();qDebug() << "Total Bytes:" << storage.bytesTotal() / (1024 * 1024) << "MB";qDebug() << "Available Bytes:" << storage.bytesAvailable() / (1024 * 1024) << "MB";qDebug() << "Read Only:" << storage.isReadOnly();}}return a.exec();
}

4、试验结果

void Widget::debugStorageInfo()
{foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {qDebug() << "Device:" << storage.device()<< "Root:" << storage.rootPath()<< "FS:" << storage.fileSystemType()<< "Size:" << storage.bytesTotal() / (1024 * 1024) << "MB"<< "USB:" << (isUSBDevice(storage) ? "Yes" : "No");//                if(storage.fileSystemType() == "FAT32")if(storage.fileSystemType() == "vfat"){qDebug() << QString::fromLocal8Bit("U盘名称为:")<<storage.name()<< QString::fromLocal8Bit("U盘路径为:")<<storage.rootPath();}}
}bool Widget::isUSBDevice(const QStorageInfo &storage)
{// Linux系统下通过设备路径判断if (storage.device().contains("/dev/sd") || storage.device().contains("/dev/disk/by-id/usb")) {return true;}// Windows系统下通过设备类型判断//        if (storage.fileSystemType() == "NTFS" || storage.fileSystemType() == "FAT32") {if (storage.fileSystemType() == "vfat") {// 可能需要更精确的判断逻辑return true;}return false;
}
    QString diskPath = usbdisk.debugStorageInfo();// 检查是否是升级U盘if (QFile::exists(diskPath + "/upgrade/package.upg.zip")) {QMessageBox::information(this, tr("检测到升级U盘"),tr("发现升级文件,是否开始升级?"));}
http://www.dtcms.com/a/536144.html

相关文章:

  • 医护上门系统开发的关键技术解析与实践指南
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (3
  • Win10结束支持后,Linux发行版ZorinOS下载量两天破10w?怎么安装?
  • php和mysql做租车网站平台广告投放
  • Spring Boot3零基础教程,KafkaTemplate 发送消息,笔记77
  • 强化学习2.3 MDP价值迭代和策略迭代收敛证明
  • 网站建设公司相关资质重养网站建设
  • Android 中 RecyclerView 控件实现局部刷新而非整行刷新
  • STM32学习路线!软硬件兼修:裸机+RTOS+LVGL+硬件设计+项目实战 (STM32多核心开发板)
  • iOS 26 文件导出与数据分析,多工具组合下的开发者实践指南
  • Gradle 与 CI/CD 集成:Jenkins/GitHub Actions 自动化构建配置
  • STM32——IWDG
  • 一般的网站开发语言用什么免费网页制作
  • 浅述视频汇聚平台EasyCVR视频编解码与转码技术如何成就视频体验
  • 站长工具seo域名解析不了腾讯微信小程序公众号
  • cms网站访问人数网站主机多大
  • 基于线性预测算法的PON系统动态资源调度matlab仿真
  • 10月27日
  • 系规案例模拟题分享
  • flink实验三:实时数据流处理(踩坑记录)
  • Milvus简介
  • 高并发内存池 - 开发记录08,09
  • 廊坊网站排名优化公司哪家好哈尔滨网站制作公司
  • Node.js 数据查询优化技巧
  • 最新电子电气架构(EEA)调研-2
  • 【数据结构】顺序表+回调函数
  • 图像归一化:OpenCV 高效映射 [0,255] → [-1,1] 性能实测
  • allWebPlugin.IE扩展使用介绍
  • C语言输入输出函数完整指南:从基础到高级应用
  • 20.10 多模态PPT生成准确率突破93%!ChatPPT v3.0动态权重技术深度解析