CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[QT] Erreur dans le code!

Penta-Penguin
Penta-Penguin
Niveau 10
19 octobre 2008 à 21:28:18

salut tout le monde,

bon voila je débute avec QT (avec site du zero) et je bloque déjà, je veux créer une petite application qui calcule les solutions d'une équation de deuxième degré ax²+bx+c=0
l'utilisateur doit donner a, b et c comme par paramètre

voila mon script "delta.h"

  1. ifndef DELTA_H_INCLUDED
  2. define DELTA_H_INCLUDED
  1. include<QWidget>
  2. include<QtGui>

class delta : public QWidget {

private:
QSpinBox *a; //ax²
QSpinBox *b; //bx
QSpinBox *c; //c
QLabel *x1; //solution 1
QLabel *x2; //solution 2

public:
delta(); //constructeur

public slots:
void calcul(); //slot
};

delta::delta() : QWidget()
{

QFormLayout *form=new QFormLayout; //layout pour la formulaire
QPushButton *calculer=new QPushButton("Calculer!"); //bouton pour calculer les solutions
QPushButton *quitter=new QPushButton("Quitter"); //quitter l'application, osef de ce bouton pour le moment

//des layouts
QVBoxLayout *layoutPrincipal=new QVBoxLayout;
QHBoxLayout *layout=new QHBoxLayout;
QHBoxLayout *layout2=new QHBoxLayout;

//instancier les attributs
a=new QSpinBox();
b=new QSpinBox();
c=new QSpinBox();
x1=new QLabel("x1= ");
x2=new QLabel("x2= ");

form->addRow("Taper a : ", a);
form->addRow("Taper b : ", b);
form->addRow("Taper c : ", c);

layout->addWidget(calculer);
layout->addWidget(quitter);

layout2->addWidget(x1);
layout2->addWidget(x2);

layoutPrincipal->addLayout(form);
layoutPrincipal->addLayout(layout2);
layoutPrincipal->addLayout(layout);

connect(calculer, SIGNAL(clicked()), this, SLOT(calcul())); //JE SAIS PAS POURQUOI çA MARCHE PAS :(

setLayout(layoutPrincipal);
setWindowTitle("Calcul de Delta");
}

void delta::calcul()
{
/*juste pour tester le truc */

QMessageBox::critical(this, "test", " Ceci est un test!");
x1->setText("hihou");
x2->setText("haha");

}

  1. endif // DELTA_H_INCLUDED

__________________________________________________
_______________________________

fichier "main.cpp"

  1. include <QApplication>
  2. include "delta.h"

int main(int argc, char* argv[])
{
QApplication app(argc, argv);
delta *nader=new delta();
nader->show();
return app.exec();
}

__________________________________________________
________________________________

y'a pas de faute quand je compile, mais quand je clique sur calculer ça marche pas!, quelqu'un m'aide à trouver l'erreur! merci :snif:

guyver2
guyver2
Niveau 10
20 octobre 2008 à 00:17:06

il manque dans la déclaration de ta classe la macro "Q_OBJECT" qui sert au moc a savoir quelles classes utilisent des slots & signals.

class delta : public QWidget {

Q_OBJECT

private:
QSpinBox *a; //ax²
QSpinBox *b; //bx
QSpinBox *c; //c
QLabel *x1; //solution 1
QLabel *x2; //solution 2

public:
delta(); //constructeur

public slots:
void calcul(); //slot
};

Penta-Penguin
Penta-Penguin
Niveau 10
21 octobre 2008 à 15:42:21

oui, merci

Pseudo supprimé
Pseudo supprimé 24 octobre 2008 à 23:14:11

Par soucis de propreté, tu devrais différentier les valeurs a,b et c des spinbox correspondantes.
Il est facile ensuite d'actualiser ces valeurs quand les spinbox sont altérées, à l'aide du mécanisme de signaux et slots (programmation événementielle).

Penta-Penguin
Penta-Penguin
Niveau 10
25 octobre 2008 à 13:50:48

merci pour le conseil

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment