Блокировка экрана в Qt - PullRequest
       7

Блокировка экрана в Qt

1 голос
/ 19 августа 2011

Есть ли в Linux системы блокировки экрана на основе Qt?

то есть 4-х значная блокировка экрана или пароль?

Любая ссылка будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

В linux блокировка экрана осуществляется заставками, а пароль - пароль от учетной записи linux пользователя.

Вы можете использовать QProcess для запуска командной строки и проверки ее успешности:

  • gnome-screensaver-command --lock
  • xscreensaver-command --lock
  • qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
  • qdbus org.gnome.ScreenSaver /ScreenSaver Lock
  • xlock

И / или использовать модуль QtDBus, чтобы сделать то же самое

// Tries to lock the screen and returns true if successful 
bool LockScreenWithDBus() {
    QDBusConnection bus = QDBusConnection::sessionBus();
    if(!bus.isConnected())
        return false;

    QStringList services;       
    services << "org.freedesktop.ScreenSaver"             
             << "org.gnome.ScreenSaver"
    // These last two are probably not necessary, because kde uses freedesktop
    // conventions for dbus
             << "org.kde.ScreenSaver"
             << "org.kde.krunner";           

    foreach(QString service, services) {        
        QDBusInterface screenSaverInterface(service, "/ScreenSaver",
                                            QString(), bus);
        if (!screenSaverInterface.isValid())
            continue;       
        QDBusReply<void> reply = screenSaverInterface.call("Lock");
        if (reply.isValid())
            return true;
    }
    return false;
}
0 голосов
/ 24 августа 2011

Вы можете создать полупрозрачный QWidget FrameLess верхнего уровня для высоты экрана и ширины экрана, а в его центре разместите текстовое поле для запроса пароля.

...