2011-08-19 78 views
1

Linux系統中是否有基於Qt的屏幕保護箱?Qt中的屏幕更衣室

即4針數字或密碼屏幕更衣櫃?

任何參考將不勝感激。

回答

2

在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

您可以創建一個頂級無框屏幕的高度和屏幕寬度文本框密碼要價,並在它的中心位置半透明的QWidget。