Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt5内存轮询_C++_Windows_Mfc_Qt5 - Fatal编程技术网

C++ Qt5内存轮询

C++ Qt5内存轮询,c++,windows,mfc,qt5,C++,Windows,Mfc,Qt5,我是新来的,所以如果我在错误的地方发帖,或者在我的问题中遗漏了一些信息,我很抱歉。是否可以使用Qt5在windows中轮询全局内存使用情况?我翻遍了报纸,没有找到我认为合适的东西。为了更具体,我正在寻找类似的东西。Qt不提供可移植的API,因为查询操作系统的内存使用情况确实是一项特定于操作系统的任务 但是,您可以编写一个包装器类,它根据您正在运行的操作系统使用正确的API 例如,在Windows上,您可以使用前面提到的GlobalMemoryStatusEx API,而在Linux上,您可以使用

我是新来的,所以如果我在错误的地方发帖,或者在我的问题中遗漏了一些信息,我很抱歉。是否可以使用Qt5在windows中轮询全局内存使用情况?我翻遍了报纸,没有找到我认为合适的东西。为了更具体,我正在寻找类似的东西。

Qt不提供可移植的API,因为查询操作系统的内存使用情况确实是一项特定于操作系统的任务

但是,您可以编写一个包装器类,它根据您正在运行的操作系统使用正确的API

例如,在Windows上,您可以使用前面提到的GlobalMemoryStatusEx API,而在Linux上,您可以使用API

一旦确定了用于目标平台的API,就可以使用条件编译为每个平台只编译正确的代码,同时向外部世界提供相同的接口

Qt提供了一些定义Q_OS_的选项,这些选项的设置与否取决于目标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编译时不包含。

似乎不太可能,但您链接的Qt文档版本非常旧。Qt5中没有类似的内容;见老问题谢谢!感谢您的回复!