2016-07-24 2 views
1

임 시작 그래서 메신저 일을 숨길 수있는 작은 도구를 만들려고 노력 폐쇄 문제는 내가 코스의 MainWindow를 호출하는 클래스 ProductDlg의 기능입니다 FinishSession()를 호출 할 때 난 당신이이Qt를 MainWindow를 종료는

void ProductsDlg::FinishSession() 
{ 
    if(Session) 
    { 
     if(this->isActiveWindow()) 
     { 
      this->hide(); 
     } 

     QMessageBox::StandardButton _finishSession = QMessageBox::question(this , "Question" , "Do you wanna Finish the Session ?" , QMessageBox::Yes | QMessageBox::No); // THIS MESSAGEBOX - IT EXISTS AFTER THIS 

     if(_finishSession == QMessageBox::Yes) 
     { 
      Session = false; 
     } 
    } 
    else 
    { 
     qDebug() << "No Session is Running"; 
    } 
} 

울부 짖는 참조 QMessageBox에서 "예 또는 아니오"를 클릭 할 때마다,이 존재한다는 것입니다 MainWindow.cpp에서 ProductsDlg를 호출하는 곳 :

bool MainWindow::nativeEvent(const QByteArray &eventType , void *message , long *result) 
{ 
    Q_UNUSED(eventType); 
    Q_UNUSED(result); 

    MSG * msg = static_cast<MSG*>(message); 
    if(msg->message == WM_HOTKEY) 
    { 
     if(msg->wParam == 0) 
     { 
      if(!pd->isVisible()) 
      { 
       QRect rect = QApplication::desktop()->availableGeometry(); 
       pd->show(); 
       pd->setFocus(); 
       pd->activateWindow(); 
       pd->move(rect.width() - pd->width() , rect.height()); 
       QPropertyAnimation *ani = new QPropertyAnimation(pd , "pos"); 
       ani->setDuration(700); 
       ani->setStartValue(pd->pos()); 
       ani->setEndValue(QPoint(rect.width() - pd->width() , rect.height() - pd->height())); 
       ani->start(); 
      } 
      else if(!pd->isActiveWindow()) 
      { 
       pd->activateWindow(); 
      } 
      else if(pd->isActiveWindow()) 
      { 
       pd->hide(); 
      } 
     } 

     else if(msg->wParam == 1) 
     { 
      pd->FinishSession(); 
     } 

     else if(msg->wParam == 2) 
     { 
      if(pd->isActiveWindow()) 
      { 
       pd->hide(); 
      } 
     } 

     else 
     { 
      return false; 
     } 
    } 
    else 
    { 
     return false; 
    } 
} 

'pd'는 전역으로 정의되고 MainWindow 생성자에서 초기화됩니다.

답변