Ответ 1
К сожалению, для этого нет ничего встроенного в Qt. Вы должны сделать это для каждой платформы.
Вот несколько примеров, чтобы вы начали. Я должен был реализовать это в одном из моих приложений только на прошлой неделе. Кодекс ниже по-прежнему очень развит; могут быть ошибки или утечки, но это может по крайней мере указать вам в правильном направлении. Меня интересовала полная физическая RAM, но другие значения доступны одинаково. (За исключением, возможно, памяти, используемой текущим приложением... не уверен в этом.)
Windows (GlobalMemoryStatusEx)
MEMORYSTATUSEX memory_status;
ZeroMemory(&memory_status, sizeof(MEMORYSTATUSEX));
memory_status.dwLength = sizeof(MEMORYSTATUSEX);
if (GlobalMemoryStatusEx(&memory_status)) {
system_info.append(
QString("RAM: %1 MB")
.arg(memory_status.ullTotalPhys / (1024 * 1024)));
} else {
system_info.append("Unknown RAM");
}
Linux (/proc/meminfo)
QProcess p;
p.start("awk", QStringList() << "/MemTotal/ { print $2 }" << "/proc/meminfo");
p.waitForFinished();
QString memory = p.readAllStandardOutput();
system_info.append(QString("; RAM: %1 MB").arg(memory.toLong() / 1024));
p.close();
Mac (sysctl)
QProcess p;
p.start("sysctl", QStringList() << "kern.version" << "hw.physmem");
p.waitForFinished();
QString system_info = p.readAllStandardOutput();
p.close();