1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| // la classe message est celle du composant QML
class Message: public QObject
{
Q_OBJECT
Q_PROPERTY(Status status READ status WRITE setStatus NOTIFY statusChanged)
Q_PROPERTY(QString message READ message WRITE setMessage NOTIFY messageChanged)
public:
explicit Message();
enum Status {
NotFound,
Found
};
Q_ENUM(Status)
Status status() const
{
return m_status;
}
QString message() const
{
return m_msg;
}
void setMessage(QString message)
{
m_msg = message;
qDebug("ici set message");
emit messageChanged(message);
qDebug("emission reussi");
}
Q_INVOKABLE void affiche()
{
qDebug("j'affiche ici");
}
void setStatus(Status status)
{
m_status = status;
emit statusChanged(status);
}
signals:
void statusChanged(Status);
void messageChanged(QString);
public slots:
void change(bool a);
// void mess(QString);
public:
Status m_status;
QString m_msg;
};
#endif // MESSAGE_H
//voici la class héritant de QWidget
class Gamer : public QWidget
{
Q_OBJECT
public:
explicit Gamer(QWidget *parent = nullptr);
void initialise(); // crée la liste de mot de depart
QStringList randomChoice(); // tire 8nombre au hazard et renvoit les Lettres de l'alphabet correpondante
QStringList generateName(QStringList init); // genere tous les noms possibles à partir des huits lettres et les renvoit sous forme de Liste
void checkForRandomName(QStringList foundInit); // recupere la liste generee et recupere les nombres appartenant aux dictionnaires et sauvegarde le tout dans m_foundInit
signals:
QString foundName(bool a); // se declenche quand l'utilisateur saisir un nom correct de la liste
QStringList generateNameCompleted(QStringList init); // se declenche quand la generation de nom à partir du Random choice se termine
QStringList initCompleted(QStringList init); // se declenche quand l'initialisation de la liste se termine
public slots:
bool checkForName(const QString &name);
void mess(QString);
private:
QStringList m_init;
QStringList m_foundInit;
Message *m_msg;
};
#endif // GAMER_H
//et voici l'implementation de son constructeur
Gamer::Gamer(QWidget *parent) : QWidget(parent)
{
Q_UNUSED(parent);
m_msg = new Message;
m_msg->change(true);
m_init = QStringList();
m_foundInit = QStringList();
connect(this, &Gamer::foundName, m_msg, &Message::change);
connect(m_msg, &Message::messageChanged, this, &Gamer::checkForName);
connect(m_msg, SIGNAL(messageChanged(QString)), this, SLOT(mess(QString)));
} |
Partager