Я developping приложения с помощью Qt4.8, на CentOS6.3Как выполнить «подтвердить» диалог менеджера гнома сеанса из приложения Qt, когда выход из системы гнома сессии (без использования QSessionManager)
Normaly, когда я выполняю " logout "при запуске приложения, Как бы то ни было, приложение завершено и сеанс выходит из системы. Как я могу это сделать, чтобы разрешить диспетчер сеанса Gnome подтвердить завершение, или не разрешить выход из системы (и завершение приложения) до тех пор, пока не будет завершена обработка, заявленная приложением.
Для меня в качестве предпочтительного приоритета являются следующие
- Менеджер сеанса справки о конце сеанса
- обработка Выход (обработка завершения сеанса) не выполняется, до выхода на стороне приложения
Я пробовал следующее, но ни одно из предполагаемых действий (сдерживание выхода из системы). Приложение прекращено, так как оно выполняется с выходом.
- Ловушка SIGHUP и SIGTERM и выполняются при (1) в обработчике сигнала.
- Ловушка SIGHUP и SIGTERM и внутри обработчика сигнала генерируют QMessageBox со значением «Вы действительно хотите уйти?» И запустите exec(), чтобы остановить процесс основного потока процесса завершения.
- Заменить closeEvent() главного виджета приложения (QWidget), создать QMessageBox со значением «Вы действительно хотите выйти?» И запустить exec(), чтобы остановить процесс основного потока процесса завершения.
пример кода я попытался:
void Widget::closeEvent(QCloseEvent *event)
{
int ret = QMessageBox::warning(
this,
tr("My Application"),
tr("Do you want to logout?"),
QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
QWidget::closeEvent(event);
}
Я нашел информацию, что Qt имеет API под названием QSessionManager, и попытался попробовать, QSessionManager и все процессы, связанные с ней аннулируются в configureed/построенная библиотека, Я не мог использовать ее.
После повторного чтения вашего комментария к моему ответу, не так ли, что вы хотите реализовать функциональность, предоставленную 'QSessionManager', но не можете использовать' QSessionManager'? –
Я не могу использовать 'QSessionManager'. 'QSessionManager', похоже, сконфигурирован/создан как пустой класс кода в моей библиотеке. – taki