В 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;
}