首页| 论坛| 消息

标题:Qt开源作品12-硬盘容量控件
作者:liudianwu
日期:2020-05-17 10:46
内容:

## 一、前言
磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间、剩余空间、总大小、已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色及文字颜色可以设置,在整体换肤的时候就需要用到。
本控件的基本上没有难点可言,就是兼容WIN和LINUX操作系统,在WIN上采用winapi去读取,linux采用QProcess去执行对应的命令(df -h)获取结果,然后定时器执行,关联信号槽获取返回的额数据解析即可,控件的应用场景主要是在一些嵌入式设备上面,方便用户查看当前还剩余多少空间。
主要功能:
1. 可自动加载本地存储设备的总容量/已用容量
2. 进度条显示已用容量
3. 支持所有操作系统
4. 增加U盘或者SD卡到达信号
## 二、代码思路
```c++
void DeviceSizeTable::load()
{
//清空原有数据
int row = this->rowCount();
for (int i = 0; i < row; i++) {
this->removeRow(0);
}
#ifdef Q_OS_WIN
QFileInfoList list = QDir::drives();
foreach (QFileInfo dir, list) {
QString dirName = dir.absolutePath();
LPCWSTR lpcwstrDriver = (LPCWSTR)dirName.utf16();
ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes;
if (GetDiskFreeSpaceEx(lpcwstrDriver, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes)) {
QString use = QString::number((double)(liTotalBytes.QuadPart - liTotalFreeBytes.QuadPart) / GB, 'f', 1);
use += "G";
QString free = QString::number((double) liTotalFreeBytes.QuadPart / GB, 'f', 1);
..


#1 [九重水 05-17 17:19]
看来老刘很渴望赚钱,今天是星期天啊。是不是老婆给的压力太大?要求在上海买大house?
#2 回 九重水 的帖子 [liudianwu 05-18 08:54]
九重水:看来老刘很渴望赚钱,今天是星期天啊。是不是老婆给的压力太大?要求在上海买大house?  (2020-05-17 17:19) 
徐汇市中心独栋别墅已经买了3年了
#3 回 liudianwu 的帖子 [九重水 05-18 09:14]
liudianwu:徐汇市中心独栋别墅已经买了3年了 (2020-05-18 08:54) 
喂喂喂,醒醒醒醒……。
没图没真相,(不准网上找图,也不准拍别人的)

回复 发表
主题 版块