D
delete221380
Yop all c'est DEVR0, aujoud'hui on ce retrouve pour un nouveau tuto en C++ avec Qt, le but de ce tutoriel va être de vous montrer comment reproduire les messages de notifications Windows par type, a savoir les message d'information, d'erreur et d'attention.
Commençons par ce qu'il vous faut :
Une fois ceci fait rendez vous sur votre formulaire et ajouter les composants que vous souhaiter.
I- Afficher une icone personnalisé dans la barre des notifications
Pour ma part j'ai ajouter les composants suivants :
Voilà a quoi ça va ressemblé :
/!\ A vous d'ajouter les 3 types de messages en Item dans la ComboBox /!\
Ensuite une fois ceci fait, rendez vous dans les propriété de la SpinBox, chercher la propriété Sufix et ajouter-y "ms". Réglé la valeur maximal par 60 000 et la valeur par défaut 15000 (exemple) c'est des milliseconde ce qui signifie que la durée d'affichage du message sera égale a 15 secondes.
Ensuite rendez vous dans votre code.cpp, pour ma part c'est Widget.cpp, vous pouvez voir que vous avez déjà ça de fait
Vous devez créer une classe, ajouter simplement
en dessous de ui->setupUI(this).
Rendez vous dans votre Header (En-tête) il faut déclaré l'utilisation de la classe QSystemTray par un #include
Il suffit d'ajouter
Ensuite il faut aussi ajouter dans l'en-tête au niveau de la class Widget dans Private ceci :
Si tout ce passe bien vous n'avez aucune erreur, et votre en tête ressemblera donc a ceci
Ensuite rendez vous dans votre code.cpp (widget.cpp) et en dessous de notifyIcon=newQSystemTrayIcon(his); nous allons ajouter d'autre choses pour pouvoir avoir une icone.
Nous allons ajouter une méthode "setIcon" qui prendra comme argument (QIcon) qui lui même est un objet
Comme ceci :
Entre les () de QIcon il faut renseigné une chaine de caractères qui est en faite le chemin d'un fichier, ce sera l'icone a afficher dans la barre des notification, il suffit d'allez dans le dossier du projet et d'ajouter un fichier en .png et entre les parenthèse vous rajouterez "lenomdelimage.png".
La nous avons définit une icone a affiché, cependant elle ne s'affichera pas puisqu'uon ne lui a pas dis, pour ce faire allez sur votre bouton "Afficher l'icone" > Clique droit > Allez au slot > Clicked()
Vous allez avoir le morceaux de code avec une fonction void créer
dans la fonction créer ajouter simplement
C'étais très difficile 
Ensuite vous pouvez déjà essayé, debugger votre logiciel et cliquez sur Activer l'icone, vous allez pouvoir apercevoir l'icone que vous avez choisit en image dans votre barre d'icone
Pour le code du bouton "masquer Icone" c'est similaire
II- Afficher un message et un titre personnalisé ainsi qu'un type de notifications
Pour choisir votre message, rendez vous sur votre bouton "Afficher Message" > Clique droit > Allez au slot > Clicked()
Une fois dans le code vous allez encore vous reservir de la classe notifyIcon mais cette fois-ci nous allons remployé la méthodes showMessage();
Vous pouvez voir par vous même le type d'argument demander par cette méthodes, il nous demande : Le titre, le contenu du message, le type de message et une durée en milliseconde (vous comprenez l'interêt du spinBox avec le suffix MS)
Pour simplifié la ligne avec la méthode showmessage nous allons nous même déclarer des variables au dessus
Dans le code du bouton nous allons faire un switch pour les 3 différents type de message
Je vous donne le code complet avec les variable, vous n'avez qu'à remplacer le nom des composants
Vous devriez avoir quelques choses de similaires
Une fois ceci fait, compilé votre projet et testé par vous même, voici le résultat
/!\ Ce tutoriel est maintenant achevé, merci de ne pas copier/collé sans crédits /!\
Commençons par ce qu'il vous faut :
- Qt
- Des bases en C++
- Posséder un semblant de cerveau

I- Afficher une icone personnalisé dans la barre des notifications
Pour ma part j'ai ajouter les composants suivants :
- LineEdit
- SpinBot
- TextEdit
- PushButton
- ComboBox
- GroupBox
Voilà a quoi ça va ressemblé :

/!\ A vous d'ajouter les 3 types de messages en Item dans la ComboBox /!\
Ensuite rendez vous dans votre code.cpp, pour ma part c'est Widget.cpp, vous pouvez voir que vous avez déjà ça de fait
Code:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
Vous devez créer une classe, ajouter simplement
Code:
notifyIcon=newQSystemTrayInfo(this);
Rendez vous dans votre Header (En-tête) il faut déclaré l'utilisation de la classe QSystemTray par un #include
Il suffit d'ajouter
Code:
#include <QSystemTrayIcon>
Ensuite il faut aussi ajouter dans l'en-tête au niveau de la class Widget dans Private ceci :
Code:
QSystemTrayIcon *notifyIcon;
Si tout ce passe bien vous n'avez aucune erreur, et votre en tête ressemblera donc a ceci

Nous allons ajouter une méthode "setIcon" qui prendra comme argument (QIcon) qui lui même est un objet
Comme ceci :
Code:
notifyIcon->setIcon(QIcon());
La nous avons définit une icone a affiché, cependant elle ne s'affichera pas puisqu'uon ne lui a pas dis, pour ce faire allez sur votre bouton "Afficher l'icone" > Clique droit > Allez au slot > Clicked()
Vous allez avoir le morceaux de code avec une fonction void créer
dans la fonction créer ajouter simplement
Code:
notifyIcon.Show();
Ensuite vous pouvez déjà essayé, debugger votre logiciel et cliquez sur Activer l'icone, vous allez pouvoir apercevoir l'icone que vous avez choisit en image dans votre barre d'icone

Code:
notifyIcon->hide();
II- Afficher un message et un titre personnalisé ainsi qu'un type de notifications
Pour choisir votre message, rendez vous sur votre bouton "Afficher Message" > Clique droit > Allez au slot > Clicked()
Une fois dans le code vous allez encore vous reservir de la classe notifyIcon mais cette fois-ci nous allons remployé la méthodes showMessage();
Vous pouvez voir par vous même le type d'argument demander par cette méthodes, il nous demande : Le titre, le contenu du message, le type de message et une durée en milliseconde (vous comprenez l'interêt du spinBox avec le suffix MS)

Pour simplifié la ligne avec la méthode showmessage nous allons nous même déclarer des variables au dessus
Dans le code du bouton nous allons faire un switch pour les 3 différents type de message
Je vous donne le code complet avec les variable, vous n'avez qu'à remplacer le nom des composants
Code:
QString titre = ui->lineEdit->text();
QString texte = ui->textEdit->toPlainText();
qint8 temps = ui->spinBox->value();
switch(ui->comboBox->currentIndex())
{
case 0:
notifyIcon->showMessage(titre, texte, QSystemTrayIcon::Information, temps);
break;
case 1:
notifyIcon->showMessage(titre, texte, QSystemTrayIcon::Warning, temps);
break;
case 2:
notifyIcon->showMessage(titre, texte, QSystemTrayIcon::Critical, temps);
break;
}

Une fois ceci fait, compilé votre projet et testé par vous même, voici le résultat

/!\ Ce tutoriel est maintenant achevé, merci de ne pas copier/collé sans crédits /!\