📄 kmain.cpp
字号:
/**********************************************************《实时系统概况 for E2》 通用版 源码Written by Letterb @ scnu_cs_052007/7/12Thank ilove3d, Lasly, and Happyyst***********************************************************/#define QT_NO_DRAGANDDROP#define QT_NO_PROPERTIES#include <E2_EZX_ZApplication.h>#include <E2_EZX_ZKbMainWidget.h>#include <E2_EZX_ZMessageDlg.h>#include <E2_EZX_ZLabel.h>#include <E2_EZX_ZScrollPanel.h>#include <E2_EZX_ZSoftKey.h>#include <E2_EZX_ZOptionsMenu.h>#include <E2_EZX_ZFormContainer.h>#include <qlabel.h>#include <stdio.h>#include <stdlib.h>#include <qfile.h>#include <qtextcodec.h>#include <qlayout.h>#include<qtextstream.h>//#include "MyZKbMain.h"QString ChineseAndEnglish(const char*ChineseString);class MyZKbMain : public ZKbMainWidget{ Q_OBJECT/////////类成员变量声明///////// public: int current_timer;//当前timer,单位为毫秒 bool data_unit;//数据界面的计算单位 bool mem_unit;//mem界面的计算单位 bool view_mydata;//当前界面(true为数据界面,否则为mem界面) bool view_again;//是否首次读取数据状态(df) ZScrollPanel *zsv; ZLabel* cpuinfolabel;//cpu标签 ZLabel* meminfolabel;//mem标签 ZLabel* softlabel;//左右软键 ZOptionsMenu* periodopt;//周期选项子菜单 ZOptionsMenu* viewopt;//查看选项子菜单 ZMessageDlg* dlg; QString datainfo[8];//数据信息///////////类成员函数/////////// public: MyZKbMain():ZKbMainWidget((ZHeader::HEADER_TYPE)3,NULL , "ZMainWidget" , 0){//初始化 { for(int i=0;i<8;i++) datainfo[i]="0"; } dlg=NULL; ini_soft();//初始化界面设置 view_again=false;/////////////////////界面初始化(标题,左右软键,标签位置)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QVBoxLayout* layout = getVBoxLayout(); setMainWidgetTitle(ChineseAndEnglish("实时系统概况"));//////////标签初始化//////// zsv = new ZScrollPanel(this , NULL , 0, (ZSkinService::WidgetClsID)4); QString info=ChineseAndEnglish("CPU频率:"); QString info2=ChineseAndEnglish("内存状态:"); QString info3 = QString (ChineseAndEnglish("刷新周期:%1 s")).arg(current_timer/1000); if(current_timer==500) info3=ChineseAndEnglish("刷新周期: 0.5 s"); softlabel=new ZLabel(info3, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4); softlabel->setPreferredWidth(240); softlabel->setAutoResize(true ); cpuinfolabel = new ZLabel(info, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4); cpuinfolabel->setPreferredWidth(240); cpuinfolabel->setAutoResize(true ); meminfolabel = new ZLabel(info2, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4); meminfolabel->setPreferredWidth(240); meminfolabel->setAutoResize(true ); softlabel=new ZLabel(info3, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4); softlabel->setPreferredWidth(240); softlabel->setAutoResize(true ); int height = heightForWidth(240); zsv->addChild(softlabel , 10 , height); height+=35; zsv->addChild(cpuinfolabel , 10 , height); height = cpuinfolabel->heightForWidth(240) + 10 +10; height+=40; zsv->addChild(meminfolabel, 10 , height); layout->addWidget(zsv);///////选项目录初始化////////////// ZSoftKey* softKey = new ZSoftKey(NULL , this , this); QRect rect; periodopt = new ZOptionsMenu(rect, NULL, NULL , 0 ,(ZSkinService::WidgetClsID)2 ); periodopt->insertItem(ChineseAndEnglish("0.5秒") , NULL , NULL , true , 0 , 0 ); periodopt->insertItem(ChineseAndEnglish("1秒") , NULL , NULL , true , 1 , 1 ); periodopt->insertItem(ChineseAndEnglish("2秒") , NULL , NULL , true , 2 , 2 ); periodopt->insertItem(ChineseAndEnglish("5秒") , NULL , NULL , true , 3 , 3 ); periodopt->setItemChecked(0, true); periodopt->connectItem(0, this, SLOT(period0_5s()));//链接槽
periodopt->connectItem(1, this, SLOT(period1s())); periodopt->connectItem(2, this, SLOT(period2s())); periodopt->connectItem(3, this, SLOT(period5s())); viewopt = new ZOptionsMenu(rect, NULL, NULL , 0 ,(ZSkinService::WidgetClsID)2 ); viewopt->insertItem(ChineseAndEnglish("查看CPU/内存") , NULL , NULL , true , 0 , 0 ); viewopt->insertItem(ChineseAndEnglish("查看数据内存") , NULL , NULL , true , 1 , 1 ); viewopt->connectItem(0, this, SLOT(viewcpu_mem()));//链接槽 viewopt->connectItem(1, this, SLOT(viewmydata())); ////////////////////////////////// ZOptionsMenu* menu = new ZOptionsMenu(rect, softKey, NULL , 0 ,(ZSkinService::WidgetClsID)2 ); menu->insertItem(ChineseAndEnglish("查看(#)") , viewopt , NULL , true , 0 , 0);//插入子菜单 menu->insertItem(ChineseAndEnglish("切换单位(*)") , NULL , NULL , true , 1 , 1 ); menu->insertItem(ChineseAndEnglish("刷新周期") , periodopt , NULL , true , 2 , 2 );//插入子菜单// menu->insertItem(ChineseAndEnglish("隐藏") , NULL , NULL , true , 3 , 3 ); menu->insertItem(ChineseAndEnglish("关于") , NULL , NULL , true , 3 , 3 ); menu->connectItem(1, this, SLOT(changeunit()));//链接槽// menu->connectItem(3, this, SLOT(hide())); menu->connectItem(3, this, SLOT(about()));////////////初始化左右软键////////// softKey->setOptMenu(ZSoftKey::LEFT, menu); softKey->setText(ZSoftKey::LEFT, ChineseAndEnglish("选项"), (ZSoftKey::TEXT_PRIORITY)0); softKey->setText(ZSoftKey::RIGHT, ChineseAndEnglish("关闭"), (ZSoftKey::TEXT_PRIORITY)0); softKey->setClickedSlot(ZSoftKey::RIGHT, qApp, SLOT(quit())); setSoftKey(softKey); view_mydata=!view_mydata; changemodel(); }void showtimer()//刷新时显示cpu和mem信息,由timereven调用{ QFile cpufile("/proc/cpuinfo");//读取cpu信息 QString cpuline; if ( cpufile.open( IO_ReadOnly ) ) { QTextStream stream( &cpufile ); stream.readLine(); cpuline = stream.readLine(); // 不包括“\n”的一行文本 cpufile.close(); } QString cpuinfo; cpuinfo= QString (ChineseAndEnglish("--------CPU--------\nCPU频率: %1 MIPS")).arg(cpuline.right(6)); cpuinfolabel->setText(cpuinfo);//设置标签 cpuinfolabel->setPreferredWidth(220); cpuinfolabel->setAutoResize(true ); ////////////////////////////////// QFile memfile("/proc/meminfo");//读取mem信息 QString memline; QString swapline; if ( memfile.open( IO_ReadOnly ) ) { QTextStream stream( &memfile ); stream.readLine(); memline = stream.readLine(); // 不包括“\n”的一行文本 swapline = stream.readLine(); memfile.close(); } QString meminfo; if(mem_unit)//判断当前单位 { meminfo = QString (ChineseAndEnglish("------内存状态------\n内存已用: %1 B\n内存空余: %2 B\n交换区已用: %3 B \n交换区空余: %4 B")) .arg(memline.mid(15,9)) .arg(memline.mid(24,9)) .arg(swapline.mid(15,9)) .arg(swapline.mid(24,9)); } else { QString temp[4]; temp[0]=tof(memline.mid(15,9)); temp[1]=tof(memline.mid(24,9)); temp[2]=tof(swapline.mid(15,9)); temp[3]=tof(swapline.mid(24,9)); meminfo = QString (ChineseAndEnglish("------内存状态------\n内存已用: %1 KB\n内存空余: %2 KB\n交换区已用: %3 KB \n交换区空余: %4 KB")) .arg(temp[0]) .arg(temp[1]) .arg(temp[2]) .arg(temp[3]); } meminfolabel->setText(meminfo); meminfolabel->setPreferredWidth(220);//设置标签 meminfolabel->setAutoResize(true ); ////////////////////////////////////} void ini_soft()//初始化软件设置 { QFile file( "/ezx_user/sysinfoini.dat" ); QString line; if ( file.open( IO_ReadOnly ) ) { QTextStream stream( &file ); int countor=0; int mem_u=0; int data_u=0; int view_m=0; while ( !stream.eof() ) { line = stream.readLine(); // 不包括“\n”的一行文本 switch(countor) { case 0: current_timer=atoi(line); break; case 1: mem_u=atoi(line); break; case 2: data_u=atoi(line); break; case 3: view_m=atoi(line); default: break; } countor++; } if(mem_u) mem_unit=true; else mem_unit=false; if(data_u) data_unit=true; else data_unit=false; if(view_m) view_mydata=true; else view_mydata=false; file.close(); } else//读取失败时,变成默认 { current_timer=500; mem_unit=false; data_unit=false; view_mydata=false; } } ~MyZKbMain() { FILE *fp; fp=fopen("/ezx_user/sysinfoini.dat","wt+");//软件关闭时自动记录当前用户数据 char temp[30]; int view_m=0; int data_u=0; int mem_u=0; if(data_unit) data_u=1; else data_u=0; if(mem_unit) mem_u=1; else mem_u=0; if(view_mydata) view_m=1; else view_m=0; sprintf(temp,"%d\n%d\n%d\n%d\n",current_timer,mem_u,data_u,view_m);//记录格式 fputs(temp,fp); fclose(fp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -