Qt Widgets: システムトレイアイコンを使いこなして、ユーザーインターフェースをワンランクアップ


QSystemTrayIcon::MessageIcon は、Qt Widgets モジュールにおける QSystemTrayIcon クラスで使用される列挙型です。この列挙型は、システムトレイアイコンでバルーンメッセージを表示する際に使用するアイコンの種類を定義します。

QSystemTrayIcon::MessageIcon には、以下の 4 つの値が定義されています。

  • Critical: 重大な警告を示すアイコンを表示します。
  • Warning: 警告を示すアイコンを表示します。
  • Information: 情報を示すアイコンを表示します。
  • NoIcon: バルーンメッセージにアイコンを表示しません。

使用方法

QSystemTrayIcon::MessageIcon を使用するには、QSystemTrayIcon::showMessage() メソッドの icon パラメータに、使用するアイコンの値を渡します。

QSystemTrayIcon::showMessage("タイトル", "メッセージ", QSystemTrayIcon::Information);

この例では、"タイトル" というタイトルと "メッセージ" というメッセージを持つバルーンメッセージを表示し、その際に情報アイコンを表示します。

以下の例は、QSystemTrayIcon::MessageIcon を使用して、3種類のバルーンメッセージを表示する方法を示しています。

#include <QApplication>
#include <QSystemTrayIcon>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  QSystemTrayIcon trayIcon;
  trayIcon.setIcon(QIcon(":/icon.png"));
  trayIcon.show();

  trayIcon.showMessage("情報", "これは情報メッセージです。", QSystemTrayIcon::Information);
  trayIcon.showMessage("警告", "これは警告メッセージです。", QSystemTrayIcon::Warning);
  trayIcon.showMessage("重大", "これは重大な警告メッセージです。", QSystemTrayIcon::Critical);

  return app.exec();
}

この例では、まず QSystemTrayIcon オブジェクトを作成し、アイコンを設定して表示します。次に、showMessage() メソッドを使用して、3種類のバルーンメッセージを表示します。それぞれのメッセージには、タイトル、メッセージ、および使用するアイコンの種類が指定されています。

  • バルーンメッセージの外観は、オペレーティングシステムによって異なる場合があります。
  • QSystemTrayIcon::MessageIcon は、システムトレイアイコンがサポートしている場合にのみ使用できます。サポートされていない場合は、NoIcon が使用されます。


#include <QApplication>
#include <QSystemTrayIcon>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  QSystemTrayIcon trayIcon;
  trayIcon.setIcon(QIcon(":/icon.png"));
  trayIcon.show();

  trayIcon.showMessage("情報", "これは情報メッセージです。", QSystemTrayIcon::Information);
  trayIcon.showMessage("警告", "これは警告メッセージです。", QSystemTrayIcon::Warning);
  trayIcon.showMessage("重大", "これは重大な警告メッセージです。", QSystemTrayIcon::Critical);

  return app.exec();
}
  1. QApplication オブジェクトを作成し、イベントループを開始します。
  2. QSystemTrayIcon オブジェクトを作成します。
  3. アイコンを QSystemTrayIcon オブジェクトに設定します。
  4. QSystemTrayIcon オブジェクトを表示します。
  5. showMessage() メソッドを使用して、3種類のバルーンメッセージを表示します。
    • showMessage() メソッド呼び出しには、タイトル、メッセージ、および使用するアイコンの種類が指定されます。
  6. アプリケーションが終了するまでイベントループを実行します。
  • バルーンメッセージの外観は、オペレーティングシステムによって異なる場合があります。
  • アイコンファイル :/icon.png は、プロジェクトの適切な場所に配置する必要があります。
  • このコードは、Qt Creator 4.15.2 と Qt 5.15.2 でコンパイルしてテストされています。


代替方法

QSystemTrayIcon::MessageIcon の代替方法として、以下の方法が考えられます。

  • カスタムウィジェットを使用する: QSystemTrayIcon::showMessage() メソッドの widget パラメータに、カスタムウィジェットを渡すことができます。これにより、バルーンメッセージに完全に独自のコンテンツを表示できます。
  • HTML を使用する: QSystemTrayIcon::showMessage() メソッドの message パラメータに、HTML 文字列を渡すことができます。これにより、バルーンメッセージのテキストやフォーマットをより細かく制御できます。
  • 独自のアイコンを使用する: QSystemTrayIcon::showMessage() メソッドの icon パラメータに、独自の QPixmap オブジェクトを渡すことができます。これにより、バルーンメッセージに表示されるアイコンを完全に制御できます。

各方法の詳細

独自のアイコンを使用する

独自のアイコンを使用するには、以下の手順を実行します。

  1. バルーンメッセージに表示するアイコンを表す QPixmap オブジェクトを作成します。
  2. QSystemTrayIcon::showMessage() メソッドの icon パラメータに、作成した QPixmap オブジェクトを渡します。
QPixmap icon(":/my-icon.png");
trayIcon.showMessage("タイトル", "メッセージ", icon);

HTML を使用する

HTML を使用するには、以下の手順を実行します。

  1. バルーンメッセージに表示する HTML 文字列を作成します。
  2. QSystemTrayIcon::showMessage() メソッドの message パラメータに、作成した HTML 文字列を渡します。
QString htmlMessage = "<p><b>タイトル</b></p><p>メッセージ</p>";
trayIcon.showMessage(htmlMessage);

カスタムウィジェットを使用する

カスタムウィジェットを使用するには、以下の手順を実行します。

  1. バルーンメッセージに表示するカスタムウィジェットを作成します。
  2. QSystemTrayIcon::showMessage() メソッドの widget パラメータに、作成したカスタムウィジェットを渡します。
QWidget *widget = new MyCustomWidget();
trayIcon.showMessage(widget);

以下の例は、上記の各方法を使用してバルーンメッセージを表示する方法を示しています。

#include <QApplication>
#include <QSystemTrayIcon>
#include <QPixmap>
#include <QLabel>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  QSystemTrayIcon trayIcon;
  trayIcon.setIcon(QIcon(":/icon.png"));
  trayIcon.show();

  // 独自のアイコンを使用する
  QPixmap icon(":/my-icon.png");
  trayIcon.showMessage("タイトル", "メッセージ", icon);

  // HTML を使用する
  QString htmlMessage = "<p><b>タイトル</b></p><p>メッセージ</p>";
  trayIcon.showMessage(htmlMessage);

  // カスタムウィジェットを使用する
  QLabel *label = new QLabel("タイトル: メッセージ");
  trayIcon.showMessage(label);

  return app.exec();
}

この例では、まず QSystemTrayIcon オブジェクトを作成し、アイコンを設定して表示します。次に、それぞれの方法を使用して 3 種類のバルーンメッセージを表示します。

  • カスタムウィジェットを使用する方法は、バルーンメッセージに完全に独自のコンテンツを表示できますが、最も複雑な方法です。
  • HTML を使用する方法は、バルーンメッセージのテキストやフォーマットをより細かく制御できますが、HTML の知識が必要となります。
  • 独自のアイコンを使用する方法は、最も単純ですが、バルーンメッセージに表示できるアイコンの自由度が低くなります。
  • 各方法には、それぞれ長所と短所があります。

状況に応じて、適切な方法を選択してください。