Button in LineEdit



  • Guten Tag,
    ich möchte gernen einen Taschenrechner erstellen mit QT per Gui. Ich bekomme es aber nicht hin, dass wenn ich einen Button drücke, er auch den gewünschten Wert in den QLineEdit einfügt.
    Dies ist was ich dazu habe:

    mainform.cpp:
    #include "mainform.h"
    
    MainForm::MainForm()
    {
        setupUi (this);
    
        QObject::connect(button1,
                    SIGNAL(clicked()),
                    this,
                    SLOT(calc()));
    }
    
    void MainForm::calc(){
    
        eingabelineEdit->setText("1");
    }
    
    mainform.h:
    #ifndef MAINFORM_H
    #define MAINFORM_H
    #include "ui_form.h"
    #include <QtWidgets>
    
    class MainForm: public QWidget, private Ui::Form
    {
    
    public:
        MainForm();
    
    private slots:
        void calc();
    };
    
    
    
    
    #endif // MAINFORM_H```cpp
    
    


  • Versuche mal etwas moderneres C++ (C++11) zu benutzen. Da bist du deutlich weniger auf den Qt Metacompiler angewiesen. Was hier und da Ärger machen kann, weil einige C++ Dateien nicht korrekt durch moc-pass laufen.

    mainform.cpp:

    #include "mainform.h"
    
    MainForm::MainForm(QWidget *parent)
    : QWidget{parent}, Ui::Form{}
    {
        setupUi(this);
    
        connect(button1, &QPushButton::clicked, this, &MainForm::calc);
    }
    
    void MainForm::calc()
    {
        eingabelineEdit->setText("1");
    }
    

    mainform.h:

    #ifndef MAINFORM_H
    #define MAINFORM_H
    
    #include "ui_form.h"
    #include <QtWidgets>
    
    class MainForm: public QWidget, private Ui::Form
    {
    public:
        MainForm(QWidget *parent = nullptr);
    
    protected:
        void calc();
    };
    #endif // MAINFORM_H```cpp
    

    Oder falls du Lambdas benutzen willst, kannst du die calc() Methode auch komplett rausschmeißen. Connect sieht dann so aus.

    connect(button1, &QPushButton::clicked, [this](){ eingabelineEdit->setText("1"); });
    

Anmelden zum Antworten