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