void AddDialog::slotNextClicked() { switch (ui->typeComboBox->currentData().toInt()) { case MenuType: mNewItem = new Menu(""); ui->typeLabel->setText("Menu");// Add type title break; case MenuItemType: mNewItem = new MenuItem("", 0.0); ui->typeLabel->setText("Menu Item"); // Add type title break; default: break; } if (mNewItem) { mParent = ui->parentComboBox->currentMenuItem(); mNewItem->accept(ui->widget); showPage2(); } }
int main(int argc,char **argv) { int sockfd; struct sockaddr_in servaddr; char sendline[MAXSEND], recvline[MAXRECV]; char city[20]; char charOfDay[2]; if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { //创建socket perror("socket created error\n"); exit(1); } memset(&servaddr, 0, sizeof(servaddr)); //设置服务器套接字地址 servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(SERV_IP); servaddr.sin_port = htons(SERV_PORT); if( connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0 ) { //连接服务器 perror("connect error\n"); } system("clear"); showPage1(); while(1) { scanf("%s",city); //读取用户输入的城市 if( city[0] == '#' && strlen(city) == 1 ) { //exit close(sockfd); exit(0); } else if( city[0] == 'q' && strlen(city)==1 ) { //cls system("clear"); showPage1(); } else { memset(sendline, 0, MAXSEND); strcpy(&sendline[2], city); printf("%s\n",sendline); send(sockfd, sendline, MAXSEND, 0); //将城市信息send到服务器 if(recv(sockfd, recvline, MAXRECV, 0) == 0) { //receive服务器返回的数据 perror("receive error\n"); exit(1); } if(recvline[0] == 'B') { //服务器不可以提供此城市的天气信息 printf("Sorry, Server does not have weather information for city %s!\n",city); showPage1(); } else if(recvline[0] == 'A') { //服务器可以提供此城市的天气信息 system("clear"); showPage2(); while(1) { scanf("%s",charOfDay); //读取用户选择的功能 if(charOfDay[0] == 'r' && strlen(charOfDay) == 1) { //cls system("clear"); showPage1(); break; } else if(charOfDay[0] == 'q' && strlen(charOfDay) == 1) { //back system("clear"); showPage2(); } else if(charOfDay[0] == '#' && strlen(charOfDay) == 1) { //exit close(sockfd); exit(0); } else if(charOfDay[0] == '1' && strlen(charOfDay) == 1) { //today memset(sendline, 0, MAXSEND); sendline[0] = 0x01; sendline[1] = 'A'; strcpy(&sendline[2], city); sendline[32] = 0x01; send(sockfd, sendline, MAXSEND, 0); if(recv(sockfd, recvline, MAXRECV, 0) == 0) { perror("receive error\n"); exit(1); } //读取到服务器返回的天气信息,并分析打印出来 printWeather(recvline); } else if(charOfDay[0] == '2' && strlen(charOfDay) == 1) { //three days from today memset(sendline, 0, MAXSEND); sendline[0] = 0x01; sendline[1] = 'B'; strcpy(&sendline[2], city); sendline[32] = 0x03; send(sockfd, sendline, MAXSEND, 0); if(recv(sockfd, recvline, MAXRECV, 0) == 0) { perror("receive error\n"); exit(1); } //读取到服务器返回的天气信息,并分析打印出来 printWeather(recvline); } else if(charOfDay[0] == '3' && strlen(charOfDay) == 1) { //custom day by yourself printf("Please enter the day number(below 10, e.g. 1 means today):"); scanf("%s",charOfDay); if(charOfDay[0] == 'r' && strlen(charOfDay) == 1) { //cls system("clear"); showPage1(); break; } else if(charOfDay[0] == 'q' && strlen(charOfDay) == 1) { //back system("clear"); showPage2(); continue; } else if(charOfDay[0] == '#' && strlen(charOfDay) == 1) { //exit close(sockfd); exit(0); } memset(sendline, 0, MAXSEND); sendline[0] = 0x01; sendline[1] = 'A'; strcpy(&sendline[2], city); while(strlen(charOfDay) != 1 || charOfDay[0] == '0') { //判断是否输入的值在1-10之间 printf("Please enter the day number(below 10, e.g. 1 means today):"); scanf("%s",charOfDay); } sendline[32] = charOfDay[0] - 48; send(sockfd, sendline, MAXSEND, 0); if(recv(sockfd, recvline, MAXRECV, 0) == 0) { perror("receive error\n"); exit(1); } //读取到服务器返回的天气信息,并分析打印出来 printWeather(recvline); } else { printf("input error!\n"); } } } } } }