Bonjour,
Etant assez novice dans l'utilisation de Qt, je suis parti de l'exemple permettant de créer une petite fenêtre avec un menu (Menus Example de la base de données des exemples de QT Creator , Qt 6.6).
Mon idée est de partir de cet exemple afin d'y rajouter au fur et à mesure des fonctionnalités.
Une des fonctionnalités que je voudrais rajouter est d'enregistrer dans un fichier .txt les attributs d'un objet d'une classe (MyClasse) que je créée.
Je n'ai pas de problème dans la création du fichier .txt ni dans l'implémentation de la classe (création de l'objet unObjet).
Je créée un slot pour l'implémentation de MyClasse dans mainwindow.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 private slots: // ... void create(); // ... private: void createActions(); void createMenus(); // ... QMenu *implementationMenu; QAction *createAct; // ... Dans mainwindow.cpp la classe est implémentée de la manière suivante : // ... void MainWindow::create() { MyClasse unObjet; // implémentation de MyClasse à l'aide du constructeur par défaut définit dans myclasse.h et myclasse.cpp infoLabel->setNum(unObjet.return_attribut); // Affiche la valeur d'un attribut de unObjet } void MainWindow::createActions() { // ... createAct = new QAction(tr("&Create"), this); createAct->setStatusTip(tr("Create an object MyClasse")); connect(createAct, &QAction::triggered, this, &MainWindow::create); // ... } void MainWindow::createMenus() { // ... implementationMenu = menuBar()->addMenu(tr("&Creation")); implementationMenu->addAction(createAct); // ...
Le code précédent fonctionne bien (unObjet est bien créé et j'arrive à afficher la valeur de l'attribut dans la fenêtre principale).
Pour tester ma nouvelle fonctionnalité, je voudrais écrire dans le fichier .txt la valeur de cet attribut. Mon idée est donc de passer en paramètre unObjet dans le slot save() de la manière suivante :
Le problème vient du fait que la dernière instruction ne fonctionne pas, j'ai systématiquement le message d'erreur : Undeclared identifier unObjet ... il semble que l'on ne puisse pas passer un paramètre dans le slot save() ou alors je ne le définit pas au bon endroit (mais alors ou faut-il le définir ???) et surtout je voudrais le créer impérativement via le menu de la fenêtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void MainWindow::save(MyClasse objet_parametre) { // Ecriture d'un attribut de objet_parametre dans le fichier } void MainWindow::createActions() { // ... saveAct = new QAction(tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, &QAction::triggered, this, &MainWindow::save(unObjet); // ... }
Pouvez-vous m'aider ?
Partager