「Qtの基礎 - シャットダウン」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
280行目: 280行目:


== 画面のロック ==
== 画面のロック ==
QDBusモジュールを使用して、GNOMEスクリーンセーバーのD-Busインターフェースに接続して、Lockメソッドを呼び出してスクリーンをロックしている。<br>
<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
#include <QDBus>
#include <QMessageBox>
  void Converter::lock()
  void Converter::lock()
  {
  {
     if(system("gnome-screensaver-command -l") && system("dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock"))
     QDBusInterface screensaver("org.gnome.ScreenSaver", "/org/gnome/ScreenSaver", "org.gnome.ScreenSaver");
     {
      QMessageBox::warning(this, "Error", "Unable to lock computer.", QMessageBox::Ok, NULL);
    if (!screensaver.isValid()) {
        QMessageBox::warning(this, "Error", "Unable to connect to GNOME ScreenSaver.", QMessageBox::Ok);
        return;
    }
    QDBusReply<void> reply = screensaver.call("Lock");
     if (!reply.isValid()) {
        QMessageBox::warning(this, "Error", "Unable to lock computer: " + reply.error().message(), QMessageBox::Ok);
     }
     }
  }
  }

案内メニュー