📢 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アクティベーションファイル) | ||
* | ** ファイルの場所 (root権限等) | ||
*: | **: /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> | ||
*: < | *: <syntaxhighlight lang="ini"># /usr/share/dbus-1/system-services/org.qt.policykit.examples.serviceファイル | ||
[D-BUS Service] | |||
Name=<D-Busサービス名> | |||
Exec=<ヘルパー実行ファイルのフルパス> | |||
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++"> | ||