12,964
回編集
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> | ||
180行目: | 220行目: | ||
*: ファイル名を、org.qt.policykit.examples.serviceファイルとする。 | *: ファイル名を、org.qt.policykit.examples.serviceファイルとする。 | ||
<br> | <br> | ||
==== ヘルパー実行ファイルの開発 ==== | ==== ヘルパー実行ファイルの開発 ==== | ||
<syntaxhighlight lang="make"> | |||
# SampleHelper.proファイル | # SampleHelper.proファイル | ||
227行目: | 267行目: | ||
target.path = $${prefix} | target.path = $${prefix} | ||
INSTALLS += target | INSTALLS += target | ||
</syntaxhighlight> | |||
<br> | <br> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> |