2016-07-24 3 views
1

イムを閉じている:main.cppに上Qtのメインウィンドウを終了し、スタートアップそうイム行う上で非表示にする必要があり小さなツールにしようとして

w.showMinimized(); 
w.hide(); 

隠しモードで私のメインウィンドウを呼び出しますが、問題は、私はコースのメインウィンドウから呼び出されたクラスProductDlg上の機能であるFinishSession()を呼び出したときに、私はあなたがこれは

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から「YesまたはNo」をクリックしたときに、それが存在することです私がProductsDlgを呼び出すMainWindow.cppから:

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コンストラクタで初期化されます。

答えて

関連する問題