Créer des menus avec une image
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:
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:
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);
} |