Ein Widget komplett an Methode übergeben

Alles rund um die Programmierung mit Qt
Antworten
Djago
Beiträge: 13
Registriert: 26. März 2018 13:42

Ein Widget komplett an Methode übergeben

Beitrag von Djago » 26. März 2018 13:57

Hallo zusammen,

ich habe mich jetzt dumm und dämlich gesucht, und finde leider keine für mich verständlich antwort. :?
meine aufgabe:
frage.jpg
frage.jpg (65.94 KiB) 2655 mal betrachtet
die t.h

Code: Alles auswählen

#ifndef TASCHENRECHNER_H
#define TASCHENRECHNER_H

#include <QMainWindow>

namespace Ui {
class Taschenrechner;
}

class Taschenrechner : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit Taschenrechner(QWidget *parent = 0);
    ~Taschenrechner();

//der Slot
public slots:
    //für die Schaltfläche
    void on_pushButton_clicked();

private:
    Ui::Taschenrechner *ui;
    enum fehler {istKlein, istGroß, istNull};
    
    void fehlerAbfangen(); //<---- diese funktion soll es sein

};

#endif // TASCHENRECHNER_H
die cpp.

Code: Alles auswählen

#include "taschenrechner.h"
#include "ui_taschenrechner.h"


Taschenrechner::Taschenrechner(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Taschenrechner)
{
    ui->setupUi(this);

}

Taschenrechner::~Taschenrechner()
{
    delete ui;
}

//der Slot für die Schaltfläche
void Taschenrechner::on_pushButton_clicked()
{
    float zahl1, zahl2, ergebnis = 0;
    bool flag = false;
    //für die Ausgabe
    QString ausgabe;

    //die Zahlen einlesen und umwandeln
    zahl1 = ui->lineEdit->text().toFloat();
    zahl2 = ui->lineEdit_2->text().toFloat();
    try
    {
        fehlerAbfangen(); //<------line prüfung
    }
    catch()// das kommt noch 
    {

    }
   
    if (ui->radioButtonAddition->isChecked() == true)
        ergebnis = zahl1 + zahl2;

    if (ui->radioButtonSubtraktion->isChecked() == true)
        ergebnis = zahl1 - zahl2;

    if (ui->radioButtonDivision->isChecked() == true)
    {

        if (zahl2 != 0)
            ergebnis = zahl1 / zahl2;
        else
            flag = true;
    }
 
    if (ui->radioButtonMultiplikation->isChecked() == true)
        ergebnis = zahl1 * zahl2;


    if (flag == true)
        ausgabe = "Nicht definiert!";
    else
        ausgabe.setNum(ergebnis);


    ui->label->setText(ausgabe);


    ui->lcdNumber->display(ergebnis);
}
void Taschenrechner::fehlerAbfangen() //<-- in diese funktion muss ich es übergeben
{




}
Leider fehlt mir hier das verständniss, bzw. fehlt mir die grundlage der übergabe.

Würde mich freuen wenn einer von euch mir das kurz erklären könnte.
Danke im voraus

hilefoks
Beiträge: 141
Registriert: 13. März 2008 17:09

Re: Ein Widget komplett an Methode übergeben

Beitrag von hilefoks » 26. März 2018 16:01

Moin,

wir machen keine Hausaufgaben... ;-)

Aber soviel: In deinem UI-File hast du zwei QLineEdit, die du ja bereits mit "ui->lineEdit" bzw. "ui->lineEdit_2" ansprichst.

Eine Funnktion die eine QLineEdit entgegennimmt sieht so aus:

Code: Alles auswählen

void machWasMitLineEdit(QLineEdit *e) {
  e->setText("Hello World!");
}
Aufrufen kannst du diese mit:

Code: Alles auswählen

machWasMitLineEdit(ui->lineEdit);
Oder auch:

Code: Alles auswählen

machWasMitLineEdit(ui->lineEdit_2);

Djago
Beiträge: 13
Registriert: 26. März 2018 13:42

Re: Ein Widget komplett an Methode übergeben

Beitrag von Djago » 26. März 2018 18:41

@hilefoks

erstmal 1000x danke das du dich gemeldet hast.

ja hausaufgabe ist es wohl, leider haben wir das thema nicht wirklich behandelt.

ich hau das morgen mal durch und hoffe das es funzt :D

ärger mich schon seit zwei tagen mit dem thema rum :twisted:

habs schon mehrfach probiert, mit void meinefunk(widget& widget);

wenn ich es richtig verstehe, ist in Qwidget QLineEdit enthalten.

daher reicht es aus wenn ich in der funktion das übergebe?

ohne vorher in der .h datei eine QlineEdit * meinline; anzulegen.

ist leicht verwirrend in der aufgabenstellung :?

Djago
Beiträge: 13
Registriert: 26. März 2018 13:42

Re: Ein Widget komplett an Methode übergeben

Beitrag von Djago » 27. März 2018 16:06

so, danke nochmal für die erklärung.
hat alles gut funktioniert :D

Antworten