QDialog가 있는데 show(), exec() 및 open()의 차이점에 대해 많이 읽었습니다. 불행히도 런타임에 대화 상자의 양식을 변경하는 해결 된 해결책을 찾지 못했습니다. 응용 프로그램이 있고 거기에서 내 QDialog가 시작되었습니다. 이 대화 상자에 전환 버튼이 있습니다. 버튼을 클릭하면 QDialog가 양식을 변경해야 응용 프로그램과 상호 작용할 수 있습니다. 단, 토글 버튼이 선택되어있을 때 항상 발생하지 않아야합니다.런타임시 QDialog의 양식을 어떻게 변경합니까?
가능성은 있습니까? setModal (true/false) 설정으로 문제를 해결할 수 없습니다. 모달을 시작하고 버튼을 토글하고 모달이 아닌 모달로 설정할 수 있지만 모달로 돌아갈 수는 없습니다. 여기
일부 코드 :
대화 시작 : 메인 창에서
다음 ToggleModalDialog
void ToggleModalDialog::changeModality(bool checkState)
{
if(checkState)
{
this->setWindowModality(Qt::NonModal);
ui->changeModalityButton->setChecked(true);
this->setModal(false);
}
else
{
this->setWindowModality(Qt::ApplicationModal);
ui->changeModalityButton->setChecked(true);
}
감사에서의 전환 슬롯에
_dialog = new ToggleModalDialog(this, id, this);
_dialog->setWindowModality(Qt::ApplicationModal);
_dialog->open();
여기를 전진!