📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の1版が非表示)
135行目: 135行目:
<br><br>
<br><br>


== PolKit-Qt-1を使用した開発例 ==
== PolKit-Qt-1を使用した開発例 1 ==
以下の例では、ネットワーク設定の変更に対する権限を確認して、必要に応じてユーザに対話を求めている。<br>
<br>
例えば、システム設定アプリケーションがシステムのネットワーク設定を変更しようとする場合、そのアクションには管理者権限が必要である。<br>
Polkit-Qt-1ライブラリを使用することにより、この権限を要求する対話を簡単に実装できる。<br>
<br>
<syntaxhighlight lang="cmake">
find_package(PolkitQt-1)
# Qt 5を使用する場合
target_link_libraries(<ターゲット名> PRIVATE
    PolkitQt5-1::Core
    PolkitQt5-1::Agent
)
# Qt 6を使用する場合
target_link_libraries(<ターゲット名> PRIVATE
    PolkitQt6-1::Core
    PolkitQt6-1::Agent
)
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
#include <PolkitQt1/Authority>
#include <PolkitQt1/Action>
using namespace PolkitQt1;
Authority::Result result = Authority::instance()->checkAuthorizationSync("org.example.modify_network",
                                                                          Authority::Subject::fromSystemBusName("org.freedesktop.DBus"),
                                                                          Authority::AllowUserInteraction);
if (result == Authority::Yes) {
    // 権限が許可された場合の処理
}
else {
    // 権限が拒否された場合の処理
}
</syntaxhighlight>
<br><br>
 
== PolKit-Qt-1を使用した開発例 2 ==
==== 開発例に挙げるソフトウェア ====
==== 開発例に挙げるソフトウェア ====
実行ファイルの画面にあるボタンを押下する時、任意のディレクトリにroot権限でテキストファイルを作成または書き込みするソフトウェアを例に挙げる。<br>
実行ファイルの画面にあるボタンを押下する時、任意のディレクトリにroot権限でテキストファイルを作成または書き込みするソフトウェアを例に挙げる。<br>
166行目: 206行目:
*: ファイル名を、org.qt.policykit.examples.confファイルとする。
*: ファイル名を、org.qt.policykit.examples.confファイルとする。
* D-Busサービスファイル(D-Busアクティベーションファイル)
* D-Busサービスファイル(D-Busアクティベーションファイル)
*: ファイルの場所 : /usr/share/dbus-1/system-services
** ファイルの場所 (root権限等)
*: .service拡張子
**: /usr/share/dbus-1/system-services
*: <br>
**: <br>
** ファイルの場所 (一般ユーザ権限等)
**: /usr/share/dbus-1/services
**: <br>
*: D-Busでは、D-Busサービスにアクセスすると自動的にソフトウェアが実行される仕組みが存在する。
*: D-Busでは、D-Busサービスにアクセスすると自動的にソフトウェアが実行される仕組みが存在する。
*: この機能を使用する場合は、/usr/share/dbus-1/servicesディレクトリにD-Busサービスファイルを作成する必要がある。
*: この機能を使用する場合は、/usr/share/dbus-1/servicesディレクトリにD-Busサービスファイルを作成する必要がある。
*: これにより、D-Busインターフェースのメソッドにアクセスする前に、ヘルパー実行ファイルを手動で実行する必要がなくなる。
*: これにより、D-Busインターフェースのメソッドにアクセスする前に、ヘルパー実行ファイルを手動で実行する必要がなくなる。
*: <br>
*: <br>
*: <code>[D-BUS Service]</code>
*: <syntaxhighlight lang="ini"># /usr/share/dbus-1/system-services/org.qt.policykit.examples.serviceファイル
*: <code>Name=<D-Busサービス名></code>
 
*: <code>Exec=<ヘルパー実行ファイルのフルパス></code>
[D-BUS Service]
*: <code>User=root</code>
Name=<D-Busサービス名>
*: <br>
Exec=<ヘルパー実行ファイルのフルパス>
*: ファイル名を、org.qt.policykit.examples.serviceファイルとする。
User=root
</syntaxhighlight>
<br>
<br>


==== ヘルパー実行ファイルの開発 ====
==== ヘルパー実行ファイルの開発 ====
<syntaxhighlight lang="make">
  # SampleHelper.proファイル
  # SampleHelper.proファイル
   
   
227行目: 272行目:
  target.path = $${prefix}
  target.path = $${prefix}
  INSTALLS += target
  INSTALLS += target
</syntaxhighlight>
<br>
<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">