Как сделать ключ Esc для минимизации диалога? По умолчанию он закрывается. Должен ли я обрабатывать KeyEvent
или есть лучший способ?
Qt - Esc не должен закрывать диалог
Ответ 1
Я думаю, вы можете использовать это:
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
Также смотрите Фильтры событий и событий.
Ответ 2
Побег вызывает reject(). Я переопределяю эту функцию (в моем случае не сворачивать диалог, а запрашивать сохранение)
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
Al _
Ответ 3
Переименование отклонения является правильным. Но будьте осторожны, потому что если вы хотите закрыть диалог другим способом, вы не можете позвонить близко.
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
Ответ 4
Я думаю, что для этого вам в основном пришлось бы наследовать от QDialog
. Документация для QDialog
гласит:
Escape Key
Если пользователь нажимает клавишу Esc в диалога QDialog:: reject() будет называется. Это приведет к тому, что окно close: закрыть событие не может игнорируются.