2013-03-31 3 views
4

Я хочу обновить свою базу данных до того, как приложение Qt закроется.Как вызвать слот на quit

Я хочу что-то вроде connect(this, SIGNAL(quit()), this, SLOT(updateDatabase())) Одним из способов может быть введение кнопки выхода, но возможно ли достичь этой функциональности, если пользователь нажимает Alt+F4?

ответ

6

Использовать сигнал aboutToQuit().

Этот сигнал испускается, когда приложение вот-вот покинет основной цикл , например. когда уровень цикла событий падает до нуля. Это может быть происходит либо после вызова quit() из приложения, либо , когда пользователи завершают работу всего сеанса рабочего стола.

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

Например:

connect(this, SIGNAL(aboutToQuit()), this, SLOT(updateDatabase())); 
+0

справа. Но мой mainwindow наследует QMainWindow, у которого нет SIGNAL aboutToQuit(). – sudeepdino008

+0

Хорошо. Готово. необходимо отредактировать главное. Благодарю. – sudeepdino008

+0

'aboutToQuit()' принадлежит 'QCoreApplication' или' QGuiApplication'. – deepmax

2

Существует еще один способ сделать это, не aboutToQuit() сигнал, но повторно реализоватьcloseEvent(QCloseEvent *event). Вы можете позвонить вам в слот перед заявлением event->accept();

так:

void MainWindow::closeEvent(QCloseEvent *event) 
{ 
    call_your_slot_here(); 
    // accept close event 
    event->accept(); 
} 
Смежные вопросы