2016-06-28 7 views
-1

В моей программе Qt5.7 у меня есть защита паролем. В некоторых ситуациях я хочу попросить пользователя ввести пароль. Я хочу сделать это с помощью отдельного QDialog. Этот диалог проверяет правильность пароля. И вот проблема. Как я могу проверить из родительского диалога, если авторизация была положительной?Qt5 Получить ответ от дочернего диалогового окна

Мой диалог:

Sorry for editiong, I haven't transalted it yet

И код, чтобы показать диалог:

PasswordGet pass; 
pass.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint); 
pass.setModal(true); 
pass.exec(); 

Подводя итог, я хочу знать, если пользователь нажимает кнопку Cancel (диалоговое окно просто закрыть), или щелкает Авторизовать (пароль был хорошим, а диалог закрыт)

Как это сделать? Я не хочу создавать новый глобальный bool и проверять из родительского диалога, если bool == 1, это не безопасно.

+0

Является PasswordGet подкласс QDialog? – FreddyKay

+3

Возможный дубликат [QDialog exec() и получения значения результата] (http://stackoverflow.com/questions/12470806/qdialog-exec-and-getting-result-value) – demonplus

+0

@demonplus благодарит вас за ссылку на эту тему, это помогает мне решить мою проблему. Теперь моя нить может быть дублирована:/ – km2442

ответ

1

Не изобретайте колесо, используйте диалоговое окно пароля, которое Qt уже предоставляет. Если вам нужны примеры того, как использовать Qt диалоговые увидеть их прекрасный пример здесь: http://doc.qt.io/qt-5/qtwidgets-dialogs-standarddialogs-example.html

Вы хотели бы использовать QDialogEdit::getText с QLineEdit::EchoMode из QLineEdit::Password. Если вы ожидаете пользователю ввести: QString password Тогда ваш код будет выглядеть примерно так:

bool ok; 
QString text = QDialogEdit::getText(this, tr("Authorization"), tr("Password:"), QLineEdit::Password, QString(), &ok); 

if(ok && text == password) // Success, do you're action here 
+0

Спасибо за идею, но я решил, что мой выпуск еще один способ. – km2442

+0

@KamilKlecha Если возможно, вы должны отправить свое решение здесь и принять его в интересах любого, кто придет после вас, кто также может бороться с той же проблемой! –

Смежные вопросы