⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kmain.cpp

📁 moto e2的实时系统概况的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(dlg)			delete dlg;		killTimers();	}	QString tof(QString source)//单位转换(其实就是字符串的分拆)	{		int sum=atoi(source);		int left=sum/1000;		int right=sum%1000;				char temp[20];		if(left!=0)		{			if(right>99)				sprintf(temp,"%d.%d",left,right);				else 					if(right>9)						sprintf(temp,"%d.0%d",left,right);						else							if(right>=0)								sprintf(temp,"%d.00%d",left,right);			}		else			if(sum>99)				sprintf(temp,"0.%d",right);				else					if(sum>9)						sprintf(temp,"0.0%d",right);						else							if(sum>=0)									sprintf(temp,"0.00%d",right);		return temp;	}public slots://槽	void changeunit()//改变单位	{			if(view_mydata)			data_unit=!data_unit;		else			mem_unit=!mem_unit;		view_mydata=!view_mydata;//强制//////		changemodel();/////////////刷新///////	}	void viewcpu_mem()//转到查看cpu和mem界面	{		if(!view_mydata)			return;		changemodel();	}	void viewmydata()	{		if(view_mydata)			return;		changemodel();	}		void changemodel()//切换查看界面	{		if(!view_mydata)//切换到查看数据界面		{			killTimers();			if(!view_again)			{	    	     char buf[500];				  FILE *pp;				  if( (pp = popen("df", "r")) == NULL )//system调用				         {				        printf("popen() error!\n");				         }				         		         while(fgets(buf, sizeof buf, pp))//读文件				         {					  	QString line;					  	line=buf;						if(line.find("mtdblock8")!=-1)						{datainfo[0]=line.mid(35,5);datainfo[1]=line.mid(45,5);}						else if(line.find("mtdblock9")!=-1)						{datainfo[2]=line.mid(35,5);datainfo[3]=line.mid(45,5);}						else if(line.find("mmca1")!=-1)						{datainfo[4]=line.mid(32,8);datainfo[5]=line.mid(43,8);}						else if(line.find("mmca6")!=-1)						{datainfo[6]=line.mid(32,8);datainfo[7]=line.mid(43,8);}					  				         }		         pclose(pp);	        						 		 							for(int i=0;i<8;i++)					datainfo[i]=datainfo[i].stripWhiteSpace ();			}			QString tempinfo;			if(data_unit)//判断当前单位			{			tempinfo=QString (ChineseAndEnglish("\t数据状态:\n\t(已用/可用)\n------我的数据-------\n %1KB/%2KB\n------我的文件-------\n %3KB/%4KB\n--------SD卡1--------\n %5KB/%6KB\n--------SD卡2--------\n %7KB/%8KB"))									.arg(datainfo[0])									.arg(datainfo[1])									.arg(datainfo[2])									.arg(datainfo[3])									.arg(datainfo[4])									.arg(datainfo[5])									.arg(datainfo[6])									.arg(datainfo[7]);			}			else			{				QString datainfo_f[8];				for(int i=0;i<8;i++)				{					datainfo_f[i]=tof(datainfo[i]);				}			tempinfo=QString (ChineseAndEnglish("\t数据状态:\n\t(已用/可用)\n------我的数据-------\n %1MB/%2MB\n------我的文件-------\n %3MB/%4MB\n--------SD卡1--------\n %5MB/%6MB\n--------SD卡2--------\n %7MB/%8MB"))									.arg(datainfo_f[0])									.arg(datainfo_f[1])									.arg(datainfo_f[2])									.arg(datainfo_f[3])									.arg(datainfo_f[4])									.arg(datainfo_f[5])									.arg(datainfo_f[6])									.arg(datainfo_f[7]);							}			softlabel->setText(tempinfo);//设置标签			softlabel->setPreferredWidth(240);			softlabel->setAutoResize(true );			meminfolabel->setText("");			meminfolabel->setPreferredWidth(240);			meminfolabel->setAutoResize(true );			cpuinfolabel->setText("");			cpuinfolabel->setPreferredWidth(240);			cpuinfolabel->setAutoResize(true );		}		else//切换到cpu和mem界面		{			showtimer();			QString temp = QString (ChineseAndEnglish("刷新周期:%1 s")).arg(current_timer/1000);			if(current_timer==500)				temp=ChineseAndEnglish("刷新周期: 0.5 s");			softlabel->setText(temp);				startTimer(current_timer);			}		view_mydata=!view_mydata;			}	virtual void keyPressEvent(QKeyEvent* k)//键盘事件	{	switch(k->key())	{		case 35://#键			changemodel();		break;				case 42://*键			if(view_mydata)				data_unit=!data_unit;			else				mem_unit=!mem_unit;			view_mydata=!view_mydata;			changemodel();		break;				case 48://0数字键		periodnum(500);		break;		case 49://1~9数字键		case 50:		case 51:		case 52:		case 53:		case 54:		case 55:		case 56:		case 57:				periodnum((k->key()-48)*1000);		break;				default:				break;	}	QWidget::keyPressEvent(k);			}		void about()//软件说明	{		QString title=ChineseAndEnglish("系统概况 (刷新版) v0.1");		int type=2;		QString content = ChineseAndEnglish("Written by Letterb @scnu \nEmail: letterb@tom.com\nThank ilove3d and Lasly and Happyyst\n\n说明:\n1.按#键可以在“cpu/内存”界面和“数据状态”界面之间切换;\n2.按*键可以切换计算单位。\n\t谢谢使用!!");		dlg = new ZMessageDlg(title , content , (ZMessageDlg::MessageDlgType)type , 0 , this , "about" , true , 0);		dlg->show();	}	void period0_5s()//设周期为0.5s	{		if(current_timer==500||view_mydata)			return;		softlabel->setText(ChineseAndEnglish("刷新周期: 0.5 s"));		periodopt->blockSignals( TRUE );		periodopt->setItemChecked(0, true);//貌似没有用		periodopt->blockSignals( FALSE );		killTimers();		current_timer=500;		startTimer(500);	}	void period1s()	{		if(current_timer==1000||view_mydata)			return;		softlabel->setText(ChineseAndEnglish("刷新周期:  1 s"));		periodopt->blockSignals( TRUE );		periodopt->setItemChecked(1, true);		periodopt->blockSignals( FALSE );		killTimers();		current_timer=1000;		startTimer(1000);	}	void period2s()	{		if(current_timer==2000||view_mydata)			return;		softlabel->setText(ChineseAndEnglish("刷新周期:  2 s"));		periodopt->blockSignals( TRUE );		periodopt->setItemChecked(2, true);		periodopt->blockSignals( FALSE );		killTimers();		current_timer=2000;		startTimer(2000);	}	void period5s()	{		if(current_timer==5000||view_mydata)			return;		softlabel->setText(ChineseAndEnglish("刷新周期:  5 s"));		periodopt->blockSignals( TRUE );		periodopt->setItemChecked(3, true);		periodopt->blockSignals( FALSE );		killTimers();		current_timer=5000;		startTimer(5000);	}	void periodnum(int num)//通用	{		if(view_mydata)			return;		char temp[30];		sprintf(temp,"刷新周期:  %d s",num/1000);		if(500==num)			sprintf(temp,"刷新周期:  0.5 s");		softlabel->setText(ChineseAndEnglish(temp));		periodopt->blockSignals( TRUE );		periodopt->setItemChecked(3, true);		periodopt->blockSignals( FALSE );		killTimers();		current_timer=num;		startTimer(current_timer);		}	virtual void timerEvent(QTimerEvent* e)//timer	{		showtimer();		ZKbMainWidget::timerEvent(e);			}	};QTextCodec* gbk_codec = QTextCodec::codecForName("UTF-8");
QString ChineseAndEnglish(const char*ChineseString)
{
	return gbk_codec->toUnicode(ChineseString);
} int main( int argc, char **argv )//不用说了吧 ^_^{	ZApplication* a = new ZApplication( argc, argv );	MyZKbMain*zmain=new MyZKbMain();	a->setMainWidget( zmain );    	zmain->show();	a->exec();	delete zmain;	delete a;   	return argc;}#include"kmain.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -