关闭

Qt 获取Windows内存信息

3265人阅读 评论(1) 收藏 举报
分类:

通过调用Windows API来获取Windows 内存信息,并显示在界面上,通过与Windows 内存管理器对比可以看到结果是正确的。

实现的小工具的界面效果与内存管理器对比如下:


实现的完整代码:

#pragma execution_character_set("utf-8")
#ifndef QMEMORYINFO_H
#define QMEMORYINFO_H

#include <QtWidgets/QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QTimer>

class QMemoryInfo : public QWidget
{
	Q_OBJECT

public:
	QMemoryInfo(QWidget *parent = 0);
	~QMemoryInfo();

private:
	void updateInfo();

	QTimer *m_timer;

	QLabel *m_memoryUsedLabel;
	QLabel *m_totalPhysLabel;
	QLabel *m_availPhysLabel;
	QLabel *m_totalPageFileLabel;
	QLabel *m_availPageFileLabel;
	QLabel *m_totalVirtualLabel;
	QLabel *m_availVirtualLabel;
	QLabel *m_availExVirtualLabel;

	QLineEdit *m_memoryUsedEdit;
	QLineEdit *m_totalPhysEdit;
	QLineEdit *m_availPhysEdit;
	QLineEdit *m_totalPageFileEdit;
	QLineEdit *m_availPageFileEdit;
	QLineEdit *m_totalVirtualEdit;
	QLineEdit *m_availVirtualEdit;
	QLineEdit *m_availExVirtualEdit;
};

#endif // QMEMORYINFO_H
#include "qmemoryinfo.h"
#include <QGridLayout>
#include <windows.h>
#include <sysinfoapi.h>

QMemoryInfo::QMemoryInfo(QWidget *parent)
	: QWidget(parent)
{
	m_memoryUsedLabel = new QLabel(this);
	m_totalPhysLabel = new QLabel(this);
	m_availPhysLabel = new QLabel(this);
	m_totalPageFileLabel = new QLabel(this);
	m_availPageFileLabel = new QLabel(this);
	m_totalVirtualLabel = new QLabel(this);
	m_availVirtualLabel = new QLabel(this);
	m_availExVirtualLabel = new QLabel(this);

	m_memoryUsedEdit = new QLineEdit(this);
	m_totalPhysEdit = new QLineEdit(this);
	m_availPhysEdit = new QLineEdit(this);
	m_totalPageFileEdit = new QLineEdit(this);
	m_availPageFileEdit = new QLineEdit(this);
	m_totalVirtualEdit = new QLineEdit(this);
	m_availVirtualEdit = new QLineEdit(this);
	m_availExVirtualEdit = new QLineEdit(this);

	m_memoryUsedLabel->setText(QObject::tr("内存使用率:"));
	m_totalPhysLabel->setText("总物理内存:");
	m_availPhysLabel->setText("可用物理内存:");
	m_totalPageFileLabel->setText("系统提交总数:");
	m_availPageFileLabel->setText("系统提交数:");
	m_totalVirtualLabel->setText("总虚拟内存:");
	m_availVirtualLabel->setText("可用虚拟内存:");
	m_availExVirtualLabel->setText("可用扩展虚拟:");

	m_memoryUsedEdit->setReadOnly(true);
	m_totalPhysEdit->setReadOnly(true);
	m_availPhysEdit->setReadOnly(true);
	m_totalPageFileEdit->setReadOnly(true);
	m_availPageFileEdit->setReadOnly(true);
	m_totalVirtualEdit->setReadOnly(true);
	m_availVirtualEdit->setReadOnly(true);
	m_availExVirtualEdit->setReadOnly(true);

	QGridLayout *pLay = new QGridLayout(this);
	int iLine = 0;
	pLay->addWidget(m_memoryUsedLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_memoryUsedEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_totalPhysLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_totalPhysEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_availPhysLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_availPhysEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_totalPageFileLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_totalPageFileEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_availPageFileLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_availPageFileEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_totalVirtualLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_totalVirtualEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_availVirtualLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_availVirtualEdit, iLine, 1, 1, 3);
	iLine++;
	pLay->addWidget(m_availExVirtualLabel, iLine, 0, 1, 1);
	pLay->addWidget(m_availExVirtualEdit, iLine, 1, 1, 3);

	m_timer = new QTimer(this);
	connect(m_timer, &QTimer::timeout, this, &QMemoryInfo::updateInfo);
	m_timer->start(100);
}

QMemoryInfo::~QMemoryInfo()
{

}

void QMemoryInfo::updateInfo()
{
	MEMORYSTATUSEX memoryInfo;
	memoryInfo.dwLength = sizeof(memoryInfo);
	GlobalMemoryStatusEx(&memoryInfo);

	UINT mb = 1024 * 1024;
	m_memoryUsedEdit->setText(QString::number(memoryInfo.dwMemoryLoad).append("%"));
	m_totalPhysEdit->setText(QString::number(memoryInfo.ullTotalPhys / mb));
	m_availPhysEdit->setText(QString::number(memoryInfo.ullAvailPhys / mb));
	m_totalPageFileEdit->setText(QString::number(memoryInfo.ullTotalPageFile / mb));
	m_availPageFileEdit->setText(QString::number(memoryInfo.ullTotalPageFile / mb - memoryInfo.ullAvailPageFile / mb));
	m_totalVirtualEdit->setText(QString::number(memoryInfo.ullTotalVirtual / mb));
	m_availVirtualEdit->setText(QString::number(memoryInfo.ullAvailVirtual / mb));
	m_availExVirtualEdit->setText(QString::number(memoryInfo.ullAvailExtendedVirtual / mb));
	update();
}
交流qq:1245178753

本文地址:http://blog.csdn.net/u011417605/article/details/51564802

源码下载:http://download.csdn.net/detail/u011417605/9538726

1
0
查看评论

C++/QT 获取系统CPU、内存、磁盘、进程相关信息

最近在做关于获取WINDOWS和LINUX  下的xi
  • yhd619
  • yhd619
  • 2014-07-20 09:58
  • 6037

QT 获取计算机当前cup 内存 等信息

获取计算机CPU、主板、内存、硬盘、网卡这些信息,Qt中没有相应的处理,所以需要根据平台来做相应的处理。也许Qt为了跨平台,没有提供与操作系统和硬件密切相关的一些功能(如内存、CPU、硬盘等相关信息)。 二.获取CPU信息 (1)Linux    ...
  • FCzhandu0
  • FCzhandu0
  • 2017-01-17 10:02
  • 2642

QT程序占用内存过高

 1.问题:    最近正在测试写的QT应用程序,QT程序运行在S3C2440板子上的linux系统中,测试的过程中发现一个奇怪的问题,QT程序占用内存一次比一次大。比如第一次开机QT应用程序运行内存为30M,在运行一段时间后增加到33M,此时我将板子断电。第二次上电重启...
  • yangjie1987636
  • yangjie1987636
  • 2015-05-27 09:38
  • 2312

qt 获取win操作系统版本信息

11
  • tjdgluo
  • tjdgluo
  • 2015-05-08 16:48
  • 989

windows下取得系统常用信息方法

Windows2000/XP内含的任务管理器(Taskmgr)相信大家都熟悉吧,相比之下XP里的要比2000功能更加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否觉得Windows的系统管理工具箱里的东西太分散了吗?下面就让我们看看它们的开发原理,并动手实...
  • woshinia
  • woshinia
  • 2012-10-29 17:08
  • 988

【系统信息获取】8,获取内存大小,可用内存大小

1,涉及API GlobalMemoryStatusEx 原型: BOOL WINAPI GlobalMemoryStatusEx( _Inout_ LPMEMORYSTATUSEX lpBuffer ); 获取到的MEMORYSTATUSEX结构内容为: typedef struct ...
  • dpsying
  • dpsying
  • 2014-02-10 16:49
  • 1461

qt 获取windows 的消息(qt get message from win32 API )

<br />qt 给win32 发送消息很简单,但是要获取windows 消息却十分复杂,最后想了一个不是很完美 但是也是以现在本人能力所能实现的唯一途径了,基本原理是 利用vc编写一个mfc 的dll ,这个dll 中创建一个透明窗体,利用这个dll 获取win32 API ...
  • hufeng825
  • hufeng825
  • 2010-10-29 18:00
  • 4243

GlobalMemoryStatusEx系统内存信息

GlobalMemoryStatusEx函数用于获取系统内存信息: BOOL WINAPI GlobalMemoryStatusEx(   __inout  LPMEMORYSTATUSEX lpBuffer ); 示例代码: void CTestDlg::GetMem...
  • sqcfj
  • sqcfj
  • 2012-03-02 16:14
  • 7510

Qt 获取Windows内存信息

通过调用Windows API来获取Windows 内存信息,并显示在界面上,通过与Windows 内存管理器对比可以看到结果是正确的。 实现的小工具的界面效果与内存管理器对比如下: 实现的完整代码: #pragma execution_character_set("utf-...
  • u011417605
  • u011417605
  • 2016-06-02 11:04
  • 3265

Qt 获取Windows内存信息

  • 2016-06-02 10:59
  • 8KB
  • 下载
    个人资料
    • 访问:243790次
    • 积分:3713
    • 等级:
    • 排名:第10360名
    • 原创:117篇
    • 转载:19篇
    • 译文:5篇
    • 评论:74条
    交流方式
    QQ:1245178753

    我的微博
    打赏
    博客专栏
    文章分类
    最新评论