Bonjour à tous !

J'ai rencontré un problème dans mon programme avec Qt. Celui-ci crash systématiquement lorsque j'essaye d'attribuer une icone à une QAction.

J'ai créer une fenêtre héritant de QMainWindows, les QActions, la QToolBar, les fonctions, slots, etc...
Jusqu'ici tout va bien... jusqu'au moment où je me décide d'ajouter des icônes à mes QAction: "Le programme s'est terminé subitement". Dès que j'enlève ces QIcon, le programme tourne parfaitement.
Voici une des lignes qui pose problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ouvreOrdi->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/ouvrir_ordi.png"));
J'ai aussi essayé de créer l'icone séparément puis de l'ajouter. Même problème (ci-dessous j'ai crée le QIcon sans pointeur, mais avec ça donne le même résultat).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
QIcon monIcone(QCoreApplication::applicationDirPath() + "/icones_qaction/sauver_sql.png");
Aussi, même quand je créer seulement l'icone toute seule, sans l'assigner à quoi que ce soit, ça crash aussi ! Je n'y comprend plus rien.

Et puis ce qui est encore plus bizarre, c'est que quand j'utilise la méthode QMainWindows::setWindowIcon(), il n'y a aucun problème !
Si vous pouviez m'éclairer, je vous en remercie. Vous me seriez d'une grande utilité .



Ci-dessous une partie de mon code.

Le .h de ma 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
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
#ifndef PROGRAMWINDOW_H
#define PROGRAMWINDOW_H
 
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <QWidget>
#include <QStandardItemModel>
#include <QTableView>
#include <QLabel>
#include <QBoxLayout>
#include <QMainWindow>
#include <QIcon>
#include <QMenuBar>
#include <QCoreApplication>
#include <QInputDialog>
#include <QMessageBox>
#include <QStatusBar>
#include <QToolBar>
#include "buyers.h"
 
class ProgramWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    ProgramWindow();
    void activating(bool status);
 
public slots:
    void FnouveauFichier();
    void FouvreSQL();
    void FouvreOrdi();
    void FprendSQL();
    void FprendOrdi();
    void FnouvProduit();
    void FnouvAcheteur();
    void FnouvTransaction();
    void Fajouter();
    void Fpayer();
    void FlisteTransactions();
    void Fpaid();
 
private:
    CentralField *field;
    std::vector<products*> productVector;
    std::vector<buyer*> buyerVector;
    int choice;
    int car1;
    int car2;
    double quad;
    int turn;
    bool validate;
    char bike;
    std::string devise;
    std::string truck1;
    std::string truck2;
    std::string truck3;
    std::ifstream read;
    std::ofstream write;
 
    QAction *nouveauFichier;
    QAction *ouvreSQL;
    QAction *ouvreOrdi;
    QAction *prendSQL;
    QAction *prendOrdi;
    QAction *quitter;
    QAction *nouvProduit;
    QAction *nouvAcheteur;
    QAction *nouvTransaction;
    QAction *ajouter;
    QAction *payer;
    QAction *listeTransactions;
    QAction *depense;
    QToolBar *actionBar;
};
(D'autres classes sont aussi présents dans le fichier mais je ne les montre pas par soucis de clarté)

Le constructeur de ma fenêtre principale:
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
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
ProgramWindow::ProgramWindow()
{
 
    QMenu *menuFichier = menuBar()->addMenu("&File");
    QMenu *menuEdition = menuBar()->addMenu("&Edit");
    QMenu *menuAffichage = menuBar()->addMenu("Information");
 
    nouveauFichier = menuFichier->addAction("New file");
    QMenu *ouvrir = menuFichier->addMenu("Open");
        ouvreSQL = ouvrir->addAction("From SQL database");
        ouvreOrdi = ouvrir->addAction("From computer");
    QMenu *sauvegarder = menuFichier->addMenu("Save");
        prendSQL = sauvegarder->addAction("In the SQL database");
        prendOrdi = sauvegarder->addAction("In the computer");
    quitter = menuFichier->addAction("Quit");
 
    QMenu *nouveau = menuEdition->addMenu("New");
        nouvProduit = nouveau->addAction("Product");
        nouvAcheteur = nouveau->addAction("Buyer");
        nouvTransaction = nouveau->addAction("Transaction");
    ajouter = menuEdition->addAction("Add quantity");
    payer = menuEdition->addAction("Payement");
 
    listeTransactions = menuAffichage->addAction("Transactions");
    depense = menuAffichage->addAction("Money spent");
 
 
    listeTransactions->setShortcut((QKeySequence("Ctrl+P")));
    listeTransactions->setShortcut((QKeySequence("Ctrl+B")));
    listeTransactions->setShortcut((QKeySequence("Ctrl+T")));
    listeTransactions->setShortcut((QKeySequence("Ctrl+L")));
 
 
    nouveauFichier->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/new_fichier.png"));
    ouvreSQL->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/ouvrir_sql.png"));
    ouvreOrdi->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/ouvrir_ordi.png"));
    prendSQL->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/sauver_sql.png"));
    prendOrdi->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/sauver_ordi.png"));
    nouvProduit->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/new_produit.png"));
    nouvAcheteur->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/new_acheteur.png"));
    nouvTransaction->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/new_transaction.png"));
    ajouter->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/ajouter_quantite.png"));
    payer->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/payer.png"));
    listeTransactions->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/transactions.png"));
    depense->setIcon(QIcon(QCoreApplication::applicationDirPath() + "/icones_qaction/depense.png"));
 
 
    actionBar = addToolBar("ToolBar");
    actionBar->addAction(nouveauFichier);
 
 
    QObject::connect(nouveauFichier, SIGNAL(triggered()), this, SLOT(FnouveauFichier()));
    QObject::connect(ouvreSQL, SIGNAL(triggered()), this, SLOT(FouvreSQL()));
    QObject::connect(ouvreOrdi, SIGNAL(triggered()), this, SLOT(FouvreOrdi()));
    QObject::connect(prendSQL, SIGNAL(triggered()), this, SLOT(FprendSQL()));
    QObject::connect(prendOrdi, SIGNAL(triggered()), this, SLOT(FprendOrdi()));
    QObject::connect(quitter, SIGNAL(triggered()), qApp, SLOT(quit()));
 
    QObject::connect(nouvProduit, SIGNAL(triggered()), this, SLOT(FnouvProduit()));
    QObject::connect(nouvAcheteur, SIGNAL(triggered()), this, SLOT(FnouvAcheteur()));
    QObject::connect(nouvTransaction, SIGNAL(triggered()), this, SLOT(FnouvTransaction()));
    QObject::connect(ajouter, SIGNAL(triggered()), this, SLOT(Fajouter()));
    QObject::connect(payer, SIGNAL(triggered()), this, SLOT(Fpayer()));
 
    QObject::connect(listeTransactions, SIGNAL(triggered()), this, SLOT(FlisteTransactions()));
    QObject::connect(depense, SIGNAL(triggered()), this, SLOT(Fpaid()));
 
 
    field = new CentralField(buyerVector, productVector, devise);
    devise = "NONE";
 
    this->setCentralWidget(field);
    this->setWindowTitle("Commercial simulation");
    this->setWindowIcon(QIcon(QCoreApplication::applicationDirPath() + "/icone_fenetre.png"));
    this->setMinimumWidth(570);
    this->setMinimumHeight(350);
    this->activating(true);
}
Merci par avance !