코드에 close 이벤트를 설정하려고했지만이 코드를 설정하면 프로그램이 중단됩니다.Qt의 이벤트가 닫히면 프로그램이 닫힙니다.
mainwindow.cpp
void MainWindow::closeEvent(QCloseEvent *event)
{
event->ignore();
if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation?",
"Are you sure you want to exit?",
QMessageBox::Yes|QMessageBox::No))
{
if(QMessageBox::Yes)
{
if(aboutDialog)
{
aboutDialog->close();
event->accept();
}
event->accept();
}
}
}
void MainWindow::showAboutDialog()
{
aboutDialog = new QDialog;
Ui::About aboutUi;
aboutUi.setupUi(aboutDialog);
connect(aboutUi.Close, SIGNAL(pressed()), aboutDialog, SLOT(close()));
aboutDialog->show();
}
mainwindow.h
private:
QDialog *aboutDialog;
이런 내가 왜 혼란 스러워요. 이 문제를 해결하기 위해 나를 도와주세요!
코드가 혼란 스럽다는 것 외에도,이'aboutDialog-> close();'호출을 제거하면 어떻게됩니까? 그것도 충돌합니까? – vahancho
aboutDialog는 프로그램에있는 대화 상자입니다. 이 프로그램을 제거하면 크래시가 발생하지 않지만 대화 상자가 열려있는 전체 프로그램을 닫으면 종료됩니다. 하지만 프로그램 닫는 중 대화 상자가 열리면 닫아야합니다. – user4345796
@ user4345796 주 창을 닫을 때 닫히도록 인스턴스화 할 때 주 창 포인터를'aboutDialog'의 부모로 전달할 수 있습니다 :'QDialog * aboutDialog = 새로운 QDialog (this); ' – Nejat