void MainDialogImpl::loaded(QString id){ if(sender()==sys) { tray->connected(); disconnect(sender(),0,this,0); rtc = new RTorrentClient(parent()); //update rate value connect(rtc,SIGNAL(changeUpRate(double)), tray,SIGNAL(getUpRate(double))); connect(rtc,SIGNAL(changeDownRate(double)), tray,SIGNAL(getDownRate(double))); //set new rate limit value connect(tray,SIGNAL(setUploadRate(int)), rtc,SLOT(setUploadRate(int))); connect(tray,SIGNAL(setDownloadRate(int)), rtc,SLOT(setDownloadRate(int))); //update rate limit value connect(rtc,SIGNAL(changeUploadRate(int)), tray,SIGNAL(getUploadRate(int))); connect(rtc,SIGNAL(changeDownloadRate(int)), tray,SIGNAL(getDownloadRate(int))); //connect update on show/hide event connect(tray,SIGNAL(menuShow()), rtc, SLOT(fullUpdate())); connect(tray,SIGNAL(menuShow()), rtc, SLOT(enableAutoUpdate())); connect(tray,SIGNAL(menuHide()), rtc, SLOT(disableAutoUpdate())); //------- connect(rtc,SIGNAL(updated(QString)), this,SLOT(loaded(QString))); } QSettings settings; QString view = settings.value("view","incomplete").toString(); if(sender()==rtc) { disconnect(sender(),0,this,0); rtc->using_views << view; rtc->loadUsingViews(); connect(rtc->torrents[view],SIGNAL(updated(QString)), this,SLOT(loaded(QString))); } if(id == view){ disconnect(sender(),0,this,0); int tc = rtc->torrents[view]->count(); for(int i = 0; i < tc; i++) tray->addTorrent(&((*rtc->torrents[view])[i])); } }
//保存本次数学考试记录 void saveCurrent(int isSub) { //变量定义表 FILE *currfp; uint ItemValue=0; uint isRight=0; //判断题目是否生成过 if(isDothat[2]!=1) { scrcls(); puts("对不起,您还没有答题,不能保存本次考试记录!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); } //打开文件 if((currfp=fopen("Score.txt","w"))==NULL) { scrcls(); puts("系统错误:创建文件失败!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); } //打印头 fputs("本次考试成绩查询(每题10分,共100分)\n",currfp); fputs("==================================================================\n",currfp); fputs("题号\t\t题目\t\t\t答案\t\t\t作答\t\t\t得分\n",currfp); //保存到文件中 for(;ItemValue<10;ItemValue++) { fprintf(currfp,"%2d\t\t%s\t\t%3d\t\t\t%3d\t\t\t%d\n",ItemValue+1,MathItemGroup[ItemValue].Content,MathItemGroup[ItemValue].Value,MathItemGroup[ItemValue].CValue,MathItemGroup[ItemValue].Score); if(MathItemGroup[ItemValue].Score) isRight++; //正确题目统计 } //打印尾 fputs("==================================================================\n",currfp); fprintf(currfp,"总共:10\t正确:%d\t得分:%d\n",isRight,isRight*10); //关闭文件 fclose(currfp); if(isSub==254) return ; scrcls(); puts("本次考试成绩已经保存到 Score.txt 文件中!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); }
//开始答题 void doWork() { //变量定义表 uint ItemValue=0; int CurrentValue; //判断题目是否生成过 if(isDothat[1]!=1) { scrcls(); puts("对不起,题目还没有生成不能进行考试!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); } //打印头 scrcls(); puts("请开始作答,现在有10道题目可做,请坚持做完!除法只保留整数(每题10分,共100分)\n"); //出题中 for(;ItemValue<10;ItemValue++) { //存储历史分数 MathItemGroup[ItemValue].lastScore=MathItemGroup[ItemValue].Score; MathItemGroup[ItemValue].HValue=MathItemGroup[ItemValue].CValue; printf("[题目%2d]: %s \t答案: ",ItemValue+1,MathItemGroup[ItemValue].Content); scanf("%d",&CurrentValue); MathItemGroup[ItemValue].CValue=CurrentValue; //保存当前的结果 if(CurrentValue!=MathItemGroup[ItemValue].Value) { MathItemGroup[ItemValue].Score=0; //如果答错清空当前分数 } } isDothat[2]=1; //表示这个项目已经做过了,可以进行下面的项目; scrcls(); puts("考试结束,请查看上次分数!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); }
//查询所有成绩 void viewAll() { //变量定义表 uint ItemValue=0; uint isRight=0; //判断题目是否生成过 if(isDothat[1]!=1) { scrcls(); puts("对不起,您还没有生成题目,不能查询历史成绩!\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); } viewHistory(254); //打印头 puts("\n当前成绩查询(每题10分,共100分)"); puts("====================================================================="); puts("题号\t\t题目\t\t答案\t\t作答\t\t得分"); //保存到文件中 for(;ItemValue<10;ItemValue++) { printf("%2d\t\t%s\t\t%3d\t\t%3d\t\t%d\n",ItemValue+1,MathItemGroup[ItemValue].Content,MathItemGroup[ItemValue].Value,MathItemGroup[ItemValue].CValue,MathItemGroup[ItemValue].Score); if(MathItemGroup[ItemValue].lastScore) isRight++; //正确题目统计 } //打印尾 puts("====================================================================="); printf("总共:10\t正确:%d\t得分:%d\n",isRight,isRight*10); anykey(); //回车继续 scrcls(); menuShow(); }
//应用程式的主菜单:显示 int menuShow() { //变量定义表 uint MenuItem=1; scrcls(); puts("<=-------------------------------------=>"); puts(" 小 学 数 学 考 试 系 统"); puts(" Designed by www.fcsys.us."); puts("<=-------------------------------------=>"); puts(" [1]随机生成10数学试题"); puts(" [2]开始进行本次数学考试"); puts(" [3]保存本次数学考试记录"); puts(" [4]查询历史数学考试记录"); puts(" [5]当次前次考试成绩对比"); puts(" [6]保存考试成绩到文件中"); puts(" [7]退出小学数学考试系统"); puts("<=-------------------------------------=>"); printf("\n请输入当前的选择项目[1-7限定]:"); //处理用户输入选项 scanf("%d",&MenuItem); if(MenuItem>7||MenuItem<1) menuShow(); //0:控制重新显示菜单 else switch(MenuItem) //N:控制菜单执行 { case 1:genItem();break; case 2:doWork();break; case 3:saveCurrent(0);break; case 4:viewHistory(0);break; case 5:viewAll();break; case 6:saveAll();break; case 7:exit(0); } return 0; }
void Menu::menuShowHide() { m_isMenuVisible ? menuHide() : menuShow(); m_isMenuVisible = !m_isMenuVisible; }
TrayMenu::TrayMenu(QObject *parent) : QObject(parent) { tray = new QSystemTrayIcon(QIcon(":/img/update.png"),this); tray->show(); //Create menu menu = new QMenu(tr("rTorrent client"),0); //create separator //add rate control QWidget * rate_control = new QWidget(menu); QVBoxLayout * vlayout = new QVBoxLayout(rate_control); // UP SECTION QHBoxLayout * hlayout = new QHBoxLayout(); QSpinBox * spinUp = new QSpinBox(rate_control); InfoLabel * lbl_up = new InfoLabel(rate_control); QLabel * lbl = new QLabel(rate_control); lbl->setPixmap(QPixmap(":/img/up.png")); hlayout->addWidget(lbl); hlayout->addWidget(lbl_up); #if QT_VERSION >= 0x040403 hlayout->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding)); #endif hlayout->addWidget(spinUp); lbl_up->setText(tr("%1 kb/s")); spinUp->setMaximum (10*1024); spinUp->setSuffix (tr("kb/s")); //spinUp->setPrefix (tr("Up ")); vlayout->addLayout(hlayout); //DOWN SECTION hlayout = new QHBoxLayout(); QSpinBox * spinDown = new QSpinBox(rate_control); InfoLabel * lbl_down = new InfoLabel(rate_control); lbl = new QLabel(rate_control); lbl->setPixmap(QPixmap(":/img/down.png")); hlayout->addWidget(lbl); hlayout->addWidget(lbl_down); #if QT_VERSION >= 0x040403 hlayout->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding)); #endif hlayout->addWidget(spinDown); lbl_down->setText(tr("%1 kb/s")); spinDown->setMaximum (10*1024); spinDown->setSuffix (tr("kb/s")); //spinDown->setPrefix (tr("Down ")); vlayout->addLayout(hlayout); //insert control QWidgetAction * waction = new QWidgetAction(menu); waction->setDefaultWidget(rate_control); menu->addAction(waction); menu->addSeparator(); no_torrent = menu->addAction(tr("No torrents")); no_torrent->setDisabled(true); sep = menu->addSeparator(); //set new limit rate value connect(spinUp,SIGNAL(valueChanged(int)), this,SIGNAL(setUploadRate(int))); connect(spinDown,SIGNAL(valueChanged(int)), this,SIGNAL(setDownloadRate(int))); //update limit rate value connect(this,SIGNAL(getUploadRate(int)), spinUp,SLOT(setValue(int))); connect(this,SIGNAL(getDownloadRate(int)), spinDown,SLOT(setValue(int))); //update rate value connect(this,SIGNAL(getUpRate(double)), lbl_up,SLOT(setParam(double))); connect(this,SIGNAL(getDownRate(double)), lbl_down,SLOT(setParam(double))); //create settings item QAction * settings = menu->addAction(QIcon(":/img/gear.png"),tr("Settings")); connect(settings,SIGNAL(triggered(bool)), this, SLOT(openSettings(bool))); //create status item status = new QAction(QIcon(":/img/state2.png"),tr("Disconnected"),menu); menu->addAction(status); tray->setContextMenu(menu); //create exit item QAction * exit = menu->addAction(QIcon(":/img/exit.png"),tr("Exit")); //connect menu show connect(menu,SIGNAL(aboutToShow()), this,SIGNAL(menuShow())); connect(menu,SIGNAL(aboutToHide()), this,SIGNAL(menuHide())); //connect exit connect(exit,SIGNAL(triggered(bool)), this,SIGNAL(exitClicked(bool))); }
void CarPI::_displayMenuShow(int items) { emit menuShow(items); }
void main() { menuShow(); //主菜单显示 }
//随机生成10道四则运算题 void genItem() { //变量定义表 uint ItemValue=0; uint Item1st,Item2nd; char Sym[4]={'+','-','*','/'}; uint SymP; //随机生成题目 for(;ItemValue<10;ItemValue++) { //运算数值生成 while(1){ Item1st=rand()%100; if(Item1st>0&&Item1st<=30) break; } //题目难度限定,数值小于等于30 while(1){ Item2nd=rand()%100; if(Item2nd>0&&Item2nd<=30) break; } //题目难度限定,数值小于等于30 //运算符生成 while(1){ SymP=rand()%10; if(SymP>0&&SymP<=3) break; } //SymP限定,数值小于等于3 //表达式构成 if(Item1st<10) { MathItemGroup[ItemValue].Content[0]=Item1st+'0'; MathItemGroup[ItemValue].Content[1]=Sym[SymP]; if(Item2nd<10) { MathItemGroup[ItemValue].Content[2]=Item2nd+'0'; MathItemGroup[ItemValue].Content[3]='\0'; } else { uint Item2nd_f,Item2nd_b; //数据两位分离 Item2nd_f=Item2nd/10; //第一位数字分离 Item2nd_b=Item2nd%10; //第二位数字分离 MathItemGroup[ItemValue].Content[2]=Item2nd_f+'0'; MathItemGroup[ItemValue].Content[3]=Item2nd_b+'0'; MathItemGroup[ItemValue].Content[4]='\0'; } } else { uint Item1st_f,Item1st_b; //数据两位分离 Item1st_f=Item1st/10; //第一位数字分离 Item1st_b=Item1st%10; //第二位数字分离 MathItemGroup[ItemValue].Content[0]=Item1st_f+'0'; MathItemGroup[ItemValue].Content[1]=Item1st_b+'0'; MathItemGroup[ItemValue].Content[2]=Sym[SymP]; if(Item2nd<10) { MathItemGroup[ItemValue].Content[3]=Item2nd+'0'; MathItemGroup[ItemValue].Content[4]='\0'; } else { uint Item2nd_f,Item2nd_b; //数据两位分离 Item2nd_f=Item2nd/10; //第一位数字分离 Item2nd_b=Item2nd%10; //第二位数字分离 MathItemGroup[ItemValue].Content[3]=Item2nd_f+'0'; MathItemGroup[ItemValue].Content[4]=Item2nd_b+'0'; MathItemGroup[ItemValue].Content[5]='\0'; } } //保存结果到结构体 switch(SymP) { case 0:MathItemGroup[ItemValue].Value=Item1st+Item2nd;break; case 1:MathItemGroup[ItemValue].Value=Item1st-Item2nd;break; case 2:MathItemGroup[ItemValue].Value=Item1st*Item2nd;break; case 3:MathItemGroup[ItemValue].Value=(double)Item1st/Item2nd;break; } //题目分数定义 MathItemGroup[ItemValue].Score=10; } //成功并返回 isDothat[1]=1; //表示这个项目已经做过了,可以进行下面的项目; scrcls(); puts("题目已经成功生成,现在可以开始考试\n\n[3秒钟后自动返回主菜单]"); pause(); menuShow(); }