我是新来的,所以我很抱歉,如果我张贴在错误的领域,或错过了一些信息,在我的问题。是否有可能使用Qt5?在windows中轮询全局内存使用情况,我在Qt5类中搜索过,但没有发现任何我认为合适的东西。为了获得更多的特异性,我正在寻找类似于GlobalMemoryStatusEx的东西。
发布于 2018-04-14 16:12:37
Qt不提供可移植的API,因为查询操作系统是否使用内存确实是OS特有的任务。
但是,您可以编写一个包装器类,它根据运行的操作系统使用正确的API。
例如,在(GlobalMemoryStatusEx),上您可以使用您已经提到的API,而在系统信息上您可以使用系统信息 API)。
一旦确定了要用于目标平台的API,就可以使用条件编译为每个平台编译正确的代码,同时向外部提供相同的接口。
Qt提供了一些定义(、Q_OS_、),这些定义取决于目标操作系统的设置与否。有关更多细节,请查看文档这里。
示例:
/*!
* \brief MemoryUsage::getMemoryUsage
* \return the overall memory usage in percent.
*/
int MemoryUsage::getMemoryUsage()
{
int result = 0;
#ifdef Q_OS_LINUX
struct sysinfo sys_info;
sysinfo(&sys_info);
unsigned long long total = sys_info.totalram *(unsigned long long)sys_info.mem_unit / 1024;
unsigned long long free = sys_info.freeram *(unsigned long long)sys_info.mem_unit/ 1024;
result = (total - free) * 100 / total;
#endif
#ifdef Q_OS_WIN
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
result = statex.dwMemoryLoad);
#endif
return result;
} 使用同样的技巧,您还必须确保包含了正确的头(例如,在为Linux编译时不要包含)。
https://stackoverflow.com/questions/49739690
复制相似问题