📄 kmain.cpp
字号:
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 + -