Как сделать так, чтобы QDialog не отображался в методе exec()?

я запускаю QDialog с помощью метода exec(), теперь мне нравится, чтобы он был невидимым, пока какой-то внутренний объект внутри него (Qwebkit) не завершит свою работу.
в конструкторе QDialog я установил его на:

setVisible(false);
hide()

но будет, когда я сделаю, где pAuthenticationDialogContainer является указателем на QDialog:

if(pAuthenticationDialogContainer->exec() != QDialog::Accepted ) { ....}

я вижу QDialog в течение нескольких секунд (1-2 секунды)
как я могу сделать его полностью невидимым?
Спасибо


person user63898    schedule 27.12.2011    source источник
comment
У вас есть QWebView в вашем диалоговом окне, и вы хотите показать диалоговое окно, когда испускается сигнал loadFinished, верно?   -  person graphite    schedule 28.12.2011


Ответы (1)


Рассматривали ли вы возможность подключения кнопки, которую нажимает пользователь, к слотам close() или accept() из QDialog?

connect(pAuthenticationDialogContainer->loginButton,
        SIGNAL(clicked()),
        pAuthinticationDialogContainer,
        SLOT(accept()));

Который должен скрыть диалог. Вам нужно будет сделать этот код точным и протестировать его, но это должно сделать это автоматически. Помимо этого, я думаю, было бы полезно опубликовать код для пункта else условия.

person Karlson    schedule 27.12.2011