QDateEdit et QString

Fermé
Spider_tun Messages postés 56 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 10 juin 2009 - 10 juin 2009 à 16:17
Spider_tun Messages postés 56 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 10 juin 2009 - 10 juin 2009 à 23:15
Bonjour,

j'ai ajouté une QDateEdit à mon formulaire,

[code]
QDateEdit *date = new QDateEdit();
date->setObjectName(QString::fromUtf8("date"));
date->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
[/code]

après j'ai voulu appeler le contenu pour le rendre QString mais Qt m'affiche une erreur que "date" n'est pas déclaré alors qu'elle figure bien dans mon formulaire!

[code]

QString dateContrat = date->text();
[/code]

merci de bien vouloir m'aider

3 réponses

Salut,
Donnes plus de code, je connais pas mal QT.
0
Spider_tun Messages postés 56 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 10 juin 2009
10 juin 2009 à 17:01
merci Francis, j'ai vraiment besoin d'aide pour mon projet!
voila le code de la page cpp:

#include <QtGui>
#include "addressbook.h"
#include <QSqlQuery>
#include <QFont>
#include <QDateEdit>
#include <QComboBox>


AddressBook::AddressBook(QWidget *parent)
: QWidget(parent)
{
//QPixmap *img=new QPixmap;
//const QString filename="C:\Users\Public\Pictures\Sample Pictures\Toucan.jpeg";
//img->load(filename);

QLabel *nameLabel = new QLabel(tr("Nom:"));
nameLine = new QLineEdit;
nameLine->setReadOnly(true);
nameLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *prenomLabel = new QLabel(tr("Prénom:"));
prenomLine = new QLineEdit;
prenomLine->setReadOnly(true);
prenomLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *addressLabel = new QLabel(tr("Adresse:"));
addressText = new QTextEdit;
addressText->setMaximumSize(QSize(135, 60));
addressText->setReadOnly(true);
addressText->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *villeLabel = new QLabel(tr("Ville:"));
villeLine = new QLineEdit;
villeLine->setReadOnly(true);
villeLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *telLabel = new QLabel(tr("Tel:"));
telLine = new QLineEdit;
telLine->setReadOnly(true);
telLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *faxLabel = new QLabel(tr("Fax:"));
faxLine = new QLineEdit;
faxLine->setReadOnly(true);
faxLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *mailLabel = new QLabel(tr("Mail:"));
mailLine = new QLineEdit;
mailLine->setReadOnly(true);
mailLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *descriptionContratLabel = new QLabel(tr("Description du contrat:"));
descriptionContratText = new QTextEdit;
descriptionContratText->setMaximumSize(QSize(135, 60));
descriptionContratText->setReadOnly(true);
descriptionContratText->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *dateLabel = new QLabel(tr("Date:"));

QLabel *typeClientLabel = new QLabel(tr("Type du client:"));


QLabel *montantLabel = new QLabel(tr("Montant:"));
montantLine = new QLineEdit;
montantLine->setReadOnly(true);
montantLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

//QLabel *typeClientLabel = new QLabel(tr("Type de client:"));
//typeClientLine = new QLineEdit;
//typeClientLine->setReadOnly(true);
//typeClientLine->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QLabel *premierLabel = new QLabel(tr("Veuillez remplir les champs concernant le contrat"));
premierLabel->setFont(QFont("Comic Sans MS", 8, QFont::Bold, true));

QLabel *deuxiemeLabel = new QLabel(tr("Veuillez remplir les champs concernant le client"));
deuxiemeLabel->setFont(QFont("Comic Sans MS", 8, QFont::Bold, true));

QDateEdit *date = new QDateEdit();
date->setObjectName(QString::fromUtf8("date"));
date->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

QComboBox *typeClient = new QComboBox();
typeClient->setObjectName(QString::fromUtf8("comboBox"));
typeClient->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
typeClient->insertItems(0, QStringList()
<< QApplication::translate("Form", "Client fid\303\250le", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("Form", "Client litigieux", 0, QApplication::UnicodeUTF8)
);


ajouterButton = new QPushButton(tr("&Ajouter"));
ajouterButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
//btnAjouterContrat=new QPushButton(tr("Ajouter Contrat"));

//! [instantiating findButton]

//! [instantiating findButton]
enregistrerButton = new QPushButton(tr("&Enregistrer"));
enregistrerButton->hide();
annulerButton = new QPushButton(tr("&Annuler"));
annulerButton->hide();



//! [instantiating FindDialog]

//! [instantiating FindDialog]

connect(ajouterButton, SIGNAL(clicked()), this, SLOT(ajouterContact()));
//connect(btnAjouterContrat, SIGNAL(clicked()), this, SLOT(AjouterContrat()));
connect(enregistrerButton, SIGNAL(clicked()), this, SLOT(enregistrerContact()));

connect(annulerButton, SIGNAL(clicked()), this, SLOT(annuler()));

//! [signals and slots for find]
//connect(chercherButton, SIGNAL(clicked()), this, SLOT(chercherContact()));
//! [signals and slots for find]

QVBoxLayout *buttonLayout1 = new QVBoxLayout;

buttonLayout1->addWidget(ajouterButton);
//! [adding findButton to layout]

//! [adding findButton to layout]
buttonLayout1->addWidget(enregistrerButton);
buttonLayout1->addWidget(annulerButton);
buttonLayout1->addStretch();



QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(deuxiemeLabel, 0, 0);
mainLayout->addWidget(nameLabel, 1, 0);
mainLayout->addWidget(nameLine, 1, 1);
mainLayout->addWidget(prenomLabel, 2, 0);
mainLayout->addWidget(prenomLine, 2, 1);
mainLayout->addWidget(addressLabel, 7, 0, Qt::AlignTop);
mainLayout->addWidget(addressText, 7, 1);
mainLayout->addWidget(villeLabel, 4, 0);
mainLayout->addWidget(villeLine, 4, 1);
mainLayout->addWidget(telLabel, 5, 0);
mainLayout->addWidget(telLine, 5, 1);
mainLayout->addWidget(faxLabel, 6, 0);
mainLayout->addWidget(faxLine, 6, 1);
mainLayout->addWidget(mailLabel, 3, 0);
mainLayout->addWidget(mailLine, 3, 1);
mainLayout->addWidget(premierLabel, 0, 2);
mainLayout->addWidget(dateLabel, 1, 2);
mainLayout->addWidget(date, 1, 3);
mainLayout->addWidget(descriptionContratLabel, 4, 2, Qt::AlignTop);
mainLayout->addWidget(descriptionContratText, 4, 3);
mainLayout->addWidget(montantLabel, 2, 2);
mainLayout->addWidget(montantLine, 2, 3);
mainLayout->addWidget(typeClientLabel, 3, 2);
mainLayout->addWidget(typeClient, 3, 3);
mainLayout->addLayout(buttonLayout1, 1, 4);

setLayout(mainLayout);
setWindowTitle(tr("Ajouter client"));
}

void AddressBook::ajouterContact()
{
oldName = nameLine->text();
oldPrenom = prenomLine->text();
oldAddress = addressText->toPlainText();
oldVille = villeLine->text();
oldTel = telLine->text();
oldFax = faxLine->text();
oldMail = mailLine->text();
oldDescriptionContrat = descriptionContratText->toPlainText();
//oldDateContrat = dateLine->text();


nameLine->clear();
prenomLine->clear();
addressText->clear();
villeLine->clear();
telLine->clear();
faxLine->clear();
mailLine->clear();
//dateLine->clear();
descriptionContratText->clear();
montantLine->clear();
updateInterface(Modeajouter);
}



void AddressBook::enregistrerContact()
{
QString nom = nameLine->text();
QString prenom = prenomLine->text();
QString adresse = addressText->toPlainText();
QString ville = villeLine->text();
QString tel = telLine->text();
QString fax = faxLine->text();
QString mail = mailLine->text();
QString descriptionContrat = descriptionContratText->toPlainText();
QString montantContrat = montantLine->text();




//QString dateContrat = dateLine->text();



if (nom == "" || prenom == "" || adresse == "" || ville == "" || tel == "" || fax == "" || mail == "" || descriptionContrat == "" ) {
QMessageBox::information(this, tr("Champs vide"),
tr("Entrez vos coordonnées.") );
return;
}

int i=0;i=tel.toInt();
int j=0;j=fax.toInt();
if(i==0)
{QMessageBox::information(this, tr("Retapez le numéro de téléphonne"),
tr("C'est un champ numérique.") );
return;
}
if(j==0)
{QMessageBox::information(this, tr("Retapez le numéro de fax"),
tr("C'est un champ numérique.") );
return;
}




if (currentMode == Modeajouter) {

if (!contacts.contains(nom)) {
contacts.insert(nom, adresse);
QMessageBox::information(this, tr("Ajouté avec succès"),
tr("\"%1\" a été ajouter dans vos contacts.").arg(nom));
} else {
QMessageBox::information(this, tr("Ajout non abouti"),
tr("Désolé, \"%1\" existe déja dans vos contacts.").arg(nom));
return;
}

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("monDSN"); // DSN que nous venons de créer.
db.setUserName("amir");
db.setPassword("amir");
db.open();
QSqlQuery query(db);
//"update client set nom=':nom', prenom=':prenom' where id_client=':id_client'"

query.prepare("insert into client (nom,prenom,adresse,tel,fax,ville,mail)"
"values (:nom,:prenom,:adresse,:tel,:fax,:ville,:mail)");
query.bindValue(":nom",nameLine->text());
query.bindValue(":prenom",prenomLine->text());
query.bindValue(":adresse",addressText->toPlainText());
query.bindValue(":tel",telLine->text());
query.bindValue(":fax",faxLine->text());
query.bindValue(":ville",villeLine->text());
query.bindValue(":mail",mailLine->text());
query.exec();


}
}

void AddressBook::annuler()
{
nameLine->setText(oldName);
prenomLine->setText(oldPrenom);
addressText->setText(oldAddress);
villeLine->setText(oldVille);
telLine->setText(oldTel);
faxLine->setText(oldFax);
mailLine->setText(oldMail);
descriptionContratText->setText(oldDescriptionContrat);
//dateLine->setText(oldDateContrat);
montantLine->setText(oldMontant);
updateInterface(Modenavigation);
}

//! [findContact() function]

//! [findContact() function]

void AddressBook::updateInterface(Mode mode)
{
currentMode = mode;

switch (currentMode) {

case Modeajouter:

nameLine->setReadOnly(false);
prenomLine->setReadOnly(false);
nameLine->setFocus(Qt::OtherFocusReason);
addressText->setReadOnly(false);
villeLine->setReadOnly(false);
telLine->setReadOnly(false);
faxLine->setReadOnly(false);
mailLine->setReadOnly(false);
descriptionContratText->setReadOnly(false);
//dateLine->setReadOnly(false);
montantLine->setReadOnly(false);

ajouterButton->setEnabled(false);


enregistrerButton->show();
annulerButton->show();
break;

case Modenavigation:

if (contacts.isEmpty()) {
nameLine->clear();
prenomLine->clear();
addressText->clear();
villeLine->clear();
telLine->clear();
faxLine->clear();
mailLine->clear();
descriptionContratText->clear();
//dateLine->clear();
montantLine->clear();
}

nameLine->setReadOnly(true);
prenomLine->setReadOnly(true);
addressText->setReadOnly(true);
villeLine->setReadOnly(true);
telLine->setReadOnly(true);
faxLine->setReadOnly(true);
mailLine->setReadOnly(true);
descriptionContratText->setReadOnly(true);
//dateLine->setReadOnly(true);
montantLine->setReadOnly(true);
ajouterButton->setEnabled(true);


enregistrerButton->hide();
annulerButton->hide();
break;
}
}


et voila ma fenetre.h

#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H

#include <QWidget>
#include <QMap>
//! [include finddialog's header]

QT_BEGIN_NAMESPACE
class QPushButton;
class QLabel;
class QLineEdit;
class QTextEdit;
QT_END_NAMESPACE


class AddressBook : public QWidget
{
Q_OBJECT

public:
AddressBook(QWidget *parent = 0);
enum Mode { Modenavigation, Modeajouter};

public slots:
void ajouterContact();
void enregistrerContact();
void annuler();
//void AjouterContrat();
//! [findContact() declaration]

//! [findContact() declaration]


private:
void updateInterface(Mode mode);


QPushButton *ajouterButton;

//! [findButton declaration]

//! [findButton declaration]
QPushButton *enregistrerButton;
QPushButton *annulerButton;
QLineEdit *nameLine;
QLineEdit *prenomLine;
QTextEdit *addressText;
QLineEdit *villeLine;
QLineEdit *telLine;
QLineEdit *faxLine;
QLineEdit *mailLine;
QTextEdit *descriptionContratText;
QLineEdit *montantLine;
QLineEdit *typeClientLine;


QMap<QString, QString> contacts;
//! [FindDialog declaration]

//! [FindDialog declaration]
QString oldName;
QString oldPrenom;
QString oldAddress;
QString oldVille;
QString oldTel;
QString oldFax;
QString oldMail;
QString oldDescriptionContrat;
QString oldDateContrat;
QString oldMontant;
Mode currentMode;
};

#endif
0
Qt m'affiche une erreur que "date" n'est pas déclaré
Sois humble, ne dis pas: alors qu'elle figure bien dans mon formulaire, mais : Le compilateur a toujours raison.
Alors pourquoi, le compilateur ne voit pas 'date' ? Simplement parce que 'date' n'est pas déclaré... au bon endroit. Tu utilises 'date' dans le constructeur, donc sorti de cette fonction, 'date' n'est plus connu (bien que le pointeur existe toujours, mais on a perdu l'adresse!). De même que dans ta classe tu as déclaré 'nameLine', 'prenomLine', 'addressText', ..., il faut que tu y déclares 'date' et tout ira mieux dans le meilleur des mondes, celui de la programmation ;-)
Bonne continuation.
0
Spider_tun Messages postés 56 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 10 juin 2009
10 juin 2009 à 23:15
bon,
il fau juste déclaré la QDateEdit dans le fichier .h en private

maintenant le champ date est bien déclaré et j'ai capturé la chaine de caractère depuis mais une autre erreur fai surface, quand je valide le formulaire pour un ajout, l'application se plante disant "l'application a cessé de fonctionner"

:( Help!!
0