You can use the following Win32 API function to get the free disk space in C++. Note that this function can be used with Qt for Windows if you add the required dependencies described in this post.
First of all you need to add the following to your Qt project file (.PRO file)
LIBS += -lkernel32
Next, you have to include “Windows.h” file in your header file.
#include "Windows.h"
Now you can use the following function to get the remaining free disk space in the main hard disk partition, in terms of percentage. Notice that you can also use lpSectorsPerCluster, lpBytesPerSector, lpNumberOfFreeClusters and lpTotalNumberOfClusters to get even more detailed information about the disk.
Also by providing any path or disk address other than NULL to the first parameter of GetDiskFreeSpace function below (the function used in the if clause below) you can get information about other partitions.
int getDiskFreeSpacePercentage()
{
DWORD lpSectorsPerCluster,
lpBytesPerSector,
lpNumberOfFreeClusters,
lpTotalNumberOfClusters;
if (GetDiskFreeSpace(NULL,
&lpSectorsPerCluster,
&lpBytesPerSector,
&lpNumberOfFreeClusters,
&lpTotalNumberOfClusters))
{
return int(double(lpNumberOfFreeClusters) / double(lpTotalNumberOfClusters) * 100.0);
}
else
{
return 0;
}
}