LINUX.ORG.RU

Закрытие QDialog

 


0

2

Подскажите, какой сигнал излучается при закрытии окна QDialog? В документации упоминаются сигналы accepted(), finished(int) и rejected(), но они вызывются только при удалении объекта.


Ответ на: комментарий от quiet_readonly

Это не то, что я хотел. Мне нужно обработать событие закрытия окна QDialog в другом объекте.

GSA
() автор топика

излучается

Чем то прям космическим повеяло

Тем кто это услышит. С вами говорят жители планеты Кьюди-А-Лог. Системы Кьютл-Иб. Сами себя мы называем инстансами. Наша зведа погибает. Совсем скоро она сбросит верхнюю оболо...

ziemin ★★
()

они вызывются только при удалении объекта

4.2

void QDialog::done(int r)
{
    Q_D(QDialog);
    hide();
    setResult(r);

    d->close_helper(QWidgetPrivate::CloseNoEvent);
    d->resetModalitySetByOpen();

    emit finished(r);
    if (r == Accepted)
        emit accepted();
    else if (r == Rejected)
        emit rejected();
}
Как видно из исходников, сигналы «излучаются» в слоте done ()

solovey ★★
()
Ответ на: комментарий от ziemin

Note that this signal is not emitted when hiding the dialog with hide() or setVisible(false). This includes deleting the dialog while it is visible.

Если я правильно понял, то сигналы accepted, finished и rejected не испускаются при закрытии окна.

GSA
() автор топика
Ответ на: комментарий от GSA

Во-первых тебе надо

обработать событие закрытия окна QDialog в другом объекте

вот и проверяй значение, которое он возвращает.

И, если уж на то пошло, я имел ввиду не сигналы, а методы, которые тебе надо переопределить. Но и так можно сделать - генерируй в одном из них сигнал САМ и отправляй своему объекту.

ziemin ★★
()
Ответ на: комментарий от ziemin

Я переопределял метод closeEvent и в нем генерировал свой сигнал, но мне кажется, есть способ проще.

GSA
() автор топика

Сделай внутри обработку close_event и оттуда «излучай» любой сигнал.

BruteForce ★★★
()
Ответ на: комментарий от GSA

По идее на странице справки перечислены все возможные методы. Однако у предков могут быть нужные тебе фичи, хотя я так и не понял, что тебе надо.

И, кстати, чем проверка возвращённого значения не устраивает - это гарантированно (если конечно у тебя диалог модальный).

ziemin ★★
()

излучается

Сегодня в новостях: Qt перешло на слото-лучевую систему.

anonymous
()

Ты что-то путаешь. Сигналы accepted(), finished(int) и rejected() испускаются до того как объект будет удалён и вообще никак с удалением объекта не связаны.

KblCb ★★★★★
()

какой сигнал излучается при закрытии окна QDialog?

Если вы хотите извращений, то QDialog унаследован от QWidget и обладает всеми его сигналами и слотами. Соответственно, можете использовать close() или hide(), смотря что вам нужно и высылать свой сигнал, что диалог закрыт/спрятан.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.