[qt] Dublowanie wartości przekazywanej do lineEdit.

0

Robię prosty kalkulator w QT i nie mogę dojść dlaczego po kliknięciu w klawisz do którego mam przypisany poniższy slot:

void MainWindow::on_pushButton_1_clicked()
{
    temp += ui->pushButton_1->text();
    ui->lineEdit->setText(temp);
} 

czyli temp to QString zdeklarowany w sekcji private; text Buttona to 1, i kiedy do nacisnę w lineEdicie pojawiają mi się dwie 1 albo dwie 3 , w zależności który button wcisnę. Nie kminie dlaczego??

tempa zeruje w konstruktorze <temp = "";>

0

Spróbuj:

void MainWindow::on_pushButton_1_clicked()
{
    temp = ui->lineEdit->text();
    temp += ui->pushButton_1->text();
    ui->lineEdit->setText(temp);
} 

Jeśli wciąż nie działa, to skontaktuj się z lekarzem lub farmaceutą.
Ewentualnie szukaj przyczyny w przypisywaniu slotu.

0

Pokaż łączenie sygnału ze slotem w kodzie.Poza tym powiedz,jak ten klawisz wciskasz - czy myszą,czy klawiaturą.
Osobiście podejrzewam,że działa mechanizm autorepeata - na dzień dobry spróbuj zastąpić sygnał clicked() QPushButtona sygnałem released()

0

robiłem to dość amatorsko, dla każdego przycisku osobny slot. Znalazłem niezly tutorial do porządnego kalkulatora, jak go przerobie to pewnie będzie działać. Link dla potomnych ->> http://qt-project.org/doc/qt-4.8/widgets-calculator.html

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    temp = "";

    connect(ui->pushButton_1, SIGNAL(released()), this, SLOT(on_pushButton_1_clicked()));
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2_clicked()));
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(on_pushButton_3_clicked()));
    connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(on_pushButton_4_clicked()));
    connect(ui->pushButton_5, SIGNAL(clicked()), this, SLOT(on_pushButton_5_clicked()));
    connect(ui->pushButton_6, SIGNAL(clicked()), this, SLOT(on_pushButton_6_clicked()));
    connect(ui->pushButton_7, SIGNAL(clicked()), this, SLOT(on_pushButton_7_clicked()));
    connect(ui->pushButton_8, SIGNAL(clicked()), this, SLOT(on_pushButton_8_clicked()));
    connect(ui->pushButton_9, SIGNAL(clicked()), this, SLOT(on_pushButton_9_clicked()));

} 

rady nie pomogły, teraz to się cyferki dublują wykładniczo (cokolwiek to znaczy)

0

A weź zzipuj projekt i wrzuć go tutaj

1 użytkowników online, w tym zalogowanych: 0, gości: 1