Bonsoir ,

comme je débute Qt depuis quelques semaines,j'ai une idée que j'arrive pas à la programmer.

Apres avoir créer le widget qu'on en avait parlé , j'ai pensé à ajouter un toolbar qui permet d'ajouter un nouveau produit qui ne se trouve pas bien sur dans la combobox ,du coup ce toolbar va nous donner l’accès a ouvrir autre widget ou on va remplir le nom du produit,son prix d'achat,prix de vente,stock. puis on clique sur un bouton "ok" par exemple et du coup le produit va s'ajouter dans le fichier csv des produits,et aussi dans la combobox de le widget principal.

svp aidez moi à avancer .Merci d'avance

voici le code du widget principal
Editeurproduit.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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "Produit.h"
#include <QMainWindow>
#include <QFileDialog>
#include <QVector>
#include <QComboBox>
#include <QSpinBox>
#include<QToolBar>
#include<QtGui>
 
 
 
class EditeurProduit : public QMainWindow
{
    Q_OBJECT
    QAction *add;
 
public:
    EditeurProduit(QWidget *parent = 0);
    ~EditeurProduit();
    int find( const QString& nomP) ; // retourne index du produit, ou -1
    void load();
 
 
public slots:
    void slotProduitChange(int index);
 
 
private:
    QString nom_ ;
    double pvente_, pachat_ ; // unités non gérées
    int stock_ ;
    QVector<Produit> r_;
    QComboBox *produit_;
    QDoubleSpinBox  *prixAchat_;
    QDoubleSpinBox  *prixVente_;
    QSpinBox  *quantiteStock_;
 
} ;
 
 
 
#endif // MAINWINDOW_H
Editeurproduit.cpp:

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "EditeurProduit.h"
#include<QBoxLayout>
#include<QSpinBox>
#include<QApplication>
#include<QFrame>
#include<QFormLayout>
#include<QComboBox>
#include<QFile>
#include<QString>
#include<QPushButton>
#include<QTextLine>
#include<QLabel>
 
 
EditeurProduit::~EditeurProduit()
{}
 
EditeurProduit::EditeurProduit(QWidget *parent) : QMainWindow(parent)
{
    QFrame *frame =new QFrame ;
    setCentralWidget(frame);
    QBoxLayout*lay=new QBoxLayout(QBoxLayout::TopToBottom,frame);
    QLabel *label = new QLabel("Produit  ",this);
    QLabel *label1 = new QLabel("Prix d'achat ",this);
    QLabel *label2 = new QLabel("Prix de vente ",this);
    QLabel *label3 = new QLabel("Stock ",this);
    produit_ = new QComboBox;
    prixVente_ = new QDoubleSpinBox;
    prixAchat_ = new QDoubleSpinBox;
    quantiteStock_ = new QSpinBox;
 
    lay->addWidget(label);
    lay->addWidget(produit_);
    lay->addWidget(label1);
    lay->addWidget(prixAchat_);
    lay->addWidget(label2);
    lay->addWidget(prixVente_);
    lay->addWidget(label3);
    lay->addWidget(quantiteStock_);
    lay->addStretch();
 
    QHBoxLayout *lay1=new QHBoxLayout ;
    QPushButton *save=new QPushButton("Sauver");
    lay1->addWidget(save);
    QPushButton *close=new QPushButton("Quitter");
    lay1->addWidget(close);
    lay->addLayout(lay1);
 
    r_ = lireProduits("../coffeebreak/Produits.csv") ;
    for(auto  p : r_ )
        produit_->addItem(p.nom());
 
    //Mise à jour du produit lorsque la séléction change
    connect(produit_,SIGNAL(currentIndexChanged(int)),
            this, SLOT(slotProduitChange(int)) );
    if( r_.size() != 0) slotProduitChange(0) ;
}
 
int EditeurProduit::find( const QString& nomP)
{
    for( int k = 0 ; k < r_.size() ; ++k)
        if( nomP == r_[k].nom() )
            return k ;
    return -1 ;
}
void EditeurProduit::load()
{
    /*
    //ouvrir un fichier ayant l'extension .csv
    r_ = lireProduits(QFileDialog::getOpenFileName(this,"Open File", "Produit",".csv"));
    if(!r_.isEmpty())
    {
        comboBox_Produit->clear();
        for(const auto & p :r_) //je récupère le nom du produit et l'insère dans la comboBox
            comboBox_Produit->addItem(p.nom());
        Produit p = r_.first();
        comboBox_Produit->setCurrentIndex(0);
 
    }
*/
}
void EditeurProduit::slotProduitChange(int index)
{
cout << "index = " << index << endl ;
    Produit& p = r_[index];
    cout << p << endl ;
    cout << "achat=" <<  p.pachat() << endl ;
 
    prixAchat_->setValue(p.pachat());
    prixVente_->setValue(p.pvente());
    quantiteStock_->setEnabled(p.isValid());
 
    if(p.isValid())
        quantiteStock_->setValue(p.stock());
    else
        quantiteStock_->setValue(0);
 
 
 
}