En informatique, le terme notification est souvent employé pour décrire des fonctions d’alerte automatisées entre processus ou vers des utilisateurs.
De manière générale, les notifications utilisateurs sont des alertes qui s’afficheront sur le terminal mobile ou l’ordinateur afin de l’avertir.
La classe QSystemTrayIcon permet d’intégrer une icône pour une application dans la barre d’état système (ou zone de notification). Une instance de cette classe permettra d’afficher des messages courts accompagnés d’icônes.
La classe QSystemTrayIcon est plus ou moins bien intégrée dans les systèmes Windows, GNU/Linux et macOS.
Il est possible de vérifier la présence de la barre d’état système en appelant la méthode statique QSystemTrayIcon::isSystemTrayAvailable()
.
Exemple pour créer l’icône de l’application dans la barre d’état système (system tray) :
QSystemTrayIcon *iconeSysteme = new QSystemTrayIcon(this);
iconeSysteme->setContextMenu(menuIconeSysteme);
iconeSysteme->setToolTip("MainWindow");
QIcon icone(":/icone1.png");
iconeSysteme->setIcon(icone);
setWindowIcon(icone);
Exemple pour afficher une notification :
QString titre = "Un titre";
QString message = "Un message";
int duree = 1000; // une duree en ms
QSystemTrayIcon::MessageIcon messageIcon;
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::NoIcon);
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Information);
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Warning);
messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Critical);
iconeSysteme->showMessage(titre, message, messageIcon, duree);
// ou avec sa propre icône
QIcon icone(":/icone2.png");
iconeSysteme->showMessage(titre, message, icone, duree);
Code source : notification-v2.zip
On peut tout simplement créer son propre système de notification en utilisant un simple QWidget que l’on affichera sur le bureau. Ce système plus intrusif pourra être utiliser pour des alertes urgentes car on les fera apparaître en avant-plan.
Qt fournit un type d’énumération Qt::WindowType qui est utilisé pour spécifier diverses propriétés pour un widget (Qt::WindowFlags
).
On va appliquer au QWidget
de notification les propriétés suivantes en utilisant la méthode setWindowFlags(Qt::WindowFlags type) :
Qt::FramelessWindowHint
: pour obtenir une fenêtre sans bordure. De plus, l’utilisateur ne pourra pas la déplacer ou redimensionner.
Qt::WindowStaysOnTopHint
: pour que la fenêtre reste au-dessus de toutes les autres fenêtres.
On pourra gérer l’acquittement (effacer le QWidget
de notification) avec un clic de souris (en redéfinissant mousePressEvent()
) ou en intégrant un temporisateur (avec la méthode statique QTimer::singleShot()
).
Code source : notification-v1.zip
Un Toast est un message d’information non bloquant qui s’affiche dans une petite fenêtre contextuelle. Il ne remplit que l’espace requis pour le message et l’activité en cours reste visible et interactive. Les toasts disparaissent automatiquement après un certain temps.
Exemple simple :
import android.widget.Toast;
...
Toast.makeText(getApplicationContext(), "Sending message...", Toast.LENGTH_SHORT).show(); // ou Toast.LENGTH_LONG
La classe NotificationManager permet d’informer l’utilisateur des événements qui se produisent.
Les notifications peuvent prendre différentes formes :
On utilise la méthode notify(int id, Notification notification)
pour envoyer une Notification.