QTimer에서 시간 제한을 사용하여 QDialog를 닫으려고합니다.시간 초과 후 exec()로 표시된 QDialog를 닫고 종료하는 방법은 무엇입니까?
지금까지 내가이 일을 시도 :
QDialog dlg;
..
..
myTimer.start(60000); // 60 s
connect(&myTimer, SIGNAL(timeout()),
&dlg, SLOT(close())));
dlg.exec();
qWarning() << "---timer expired or key pressed--";
그러나 타임 아웃 트리거와 close
슬롯이 eventloop이 종료되지 않은 실행될 때. reject
슬롯과 동일한 문제가 발생합니다. done
슬롯에는 예상되는 동작이 있어야하지만 여분의 인수 (int r
)가 필요하므로 timeout()
신호에 직접 연결할 수 없습니다.
물론, 나는 누락 된 인수를 제공하기 위해 timeout
신호를 "중계"할 수 있지만 더 직접적인 방법이 있습니까?
감사합니다.
done()을 슬롯으로 사용하는 방법 : "대화 상자를 닫고 결과 코드를 r로 설정합니다.이 대화 상자가 exec()와 함께 표시되면 done()은 로컬 이벤트 루프를 끝내고 exec() r을 반환합니다. " –
힙에서 대화 상자를 만들고'dlg-> exec()'를 사용하여 이벤트 루프를 차단하지 마십시오. – vahancho
'이벤트 루프가 종료되지 않았다'는 것은 무엇을 의미합니까? 대화 상자가 닫히지 않았습니까? –