• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt creator problem

Cloud VPS
0 głosów
287 wizyt
pytanie zadane 29 czerwca 2020 w C i C++ przez Jakub Mianowski Nowicjusz (140 p.)
edycja 29 czerwca 2020 przez Jakub Mianowski

Witam.Jestem  początkujący  w Qt creatorze . Wykonałem kalkutor z operacjami  dodawania/odejmowania/dzielenia  i mnożenia,fajnie  to wygląda tylko brakuje  odpowiedniego działania  wciskając przycisk pushbutton mnożenie/dodawanie/odejmowanie wyskakuje  wynik  0 gdy  dzielenia nan . Czy mógłby mi ktoś pomóc ?

 

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
     , ui(new Ui::MainWindow)

{
    ui->setupUi(this);
}

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


void MainWindow::on_p7_clicked()
{
     ui->aktualne->setText (ui->aktualne->text()+"7");
}

void MainWindow::on_p8_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"8");

}

void MainWindow::on_p9_clicked()
{

  ui->aktualne->setText (ui->aktualne->text()+"9");
}

void MainWindow::on_p4_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"4");
}

void MainWindow::on_p5_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"5");
}

void MainWindow::on_p6_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"6");
}

void MainWindow::on_p1_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"1");
}

void MainWindow::on_p2_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"2");
}

void MainWindow::on_p3_clicked()
{
      ui->aktualne->setText (ui->aktualne->text()+"3");
}

void MainWindow::on_p0_clicked()
{
   ui->aktualne->setText (ui->aktualne->text()+"0");

}

void MainWindow::on_plus_clicked()
{
    QString Txt= ui->aktualne->text();
    double x= Txt.toDouble();
    ui->aktualne->setText(QString("%1").arg(x));
    ui->aktualne->setText(ui->aktualne->text()+"+");
left=ui->aktualne->text().toDouble();
 opt=plus;

}

void MainWindow::on_pushButton_15_clicked()
{
    ui->aktualne->setText(ui->aktualne->text()+"=");
right=ui->aktualne->text().toDouble();

    double tmp;
    switch (opt) {
    case plus:
tmp=right+left;

    ui->aktualne->setText(QString::number(tmp));
    }
    switch (opt){
    case minus:
        tmp=right-left;
       ui->aktualne->setText(QString::number(tmp));
}

    ui->aktualne->setText(QString::number(tmp));
    switch (opt){
    case multiply:
        tmp=right*left;
       ui->aktualne->setText(QString::number(tmp));
    }
    ui->aktualne->setText(QString::number(tmp));
    switch (opt){
    case devide:
        tmp=right/left;
       ui->aktualne->setText(QString::number(tmp));
    }
}

void MainWindow::on_pushButton_14_clicked()
{
    ui->aktualne->clear();
}

void MainWindow::on_commaBtn_clicked()
{
    ui->aktualne->setText(ui->aktualne->text()+",");
}

void MainWindow::on_pushButton_2_clicked()
{
    ui->aktualne->setText(ui->aktualne->text()+"000");
}

void MainWindow::on_minus_clicked()
{
    ui->aktualne->setText(ui->aktualne->text()+"-");
    left=ui->aktualne->text().toDouble();
    opt=minus;
}

void MainWindow::on_multiply_clicked()
{
    ui->aktualne->setText(ui->aktualne->text()+"*");
    left=ui->aktualne->text().toDouble();
    opt=multiply;
}


void MainWindow::on_devide_clicked()
{
 ui->aktualne->setText(ui->aktualne->text()+"/");
}

 

komentarz 29 czerwca 2020 przez Patrycjerz Mędrzec (192,320 p.)
Nie twórz na przyszłość duplikatów pytań. Pierwotny post można edytować za pomocą przycisku z ikoną ołówka.

1 odpowiedź

0 głosów
odpowiedź 29 czerwca 2020 przez TOM_CPP Pasjonat (22,640 p.)

Jak myślisz jaka jest wartość liczby left

 ui->aktualne->setText(ui->aktualne->text()+"-");
 left=ui->aktualne->text().toDouble();

kiedy na końcu stringu znajduje się znak minus?

Funkcja toDouble() zwraca zero dla wszystkich stringów nie będących liczbami, a np. string "514-" nie ma poprawnego formatu liczby.

komentarz 29 czerwca 2020 przez Jakub Mianowski Nowicjusz (140 p.)
czyli  jaki  poprawny  format  powinienem  tutaj  użyć?
1
komentarz 29 czerwca 2020 przez TOM_CPP Pasjonat (22,640 p.)

W momencie w którym próbujesz zmienić string na liczbę przy pomocy funkcji toDouble(), musisz uważać aby tekst umieszczony w stringu był prawidłową liczbą.

QString("-35.34").toDouble(); // zwróci -35.34
QString("5.04").toDouble(); // zwróci 5.04
QString("245").toDouble(); // zwróci 245
QString("3534-").toDouble(); // Błąd to nie jest prawidłowa liczba - zwróci 0
QString("adf").toDouble(); // Błąd to nie jest prawidłowa liczba - zwróci 0
QString("3-5").toDouble(); // Błąd to nie jest prawidłowa liczba - zwróci 0
QString("3+").toDouble(); // Błąd to nie jest prawidłowa liczba - zwróci 0

 

komentarz 29 czerwca 2020 przez Jakub Mianowski Nowicjusz (140 p.)
edycja 29 czerwca 2020 przez Jakub Mianowski
Czy  mógłbys  mi pokazać w jaki  sposób to  poprawić aby  było  dobrze?

Podobne pytania

–1 głos
0 odpowiedzi 327 wizyt
pytanie zadane 23 lipca 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
1 odpowiedź 485 wizyt
pytanie zadane 20 lipca 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 452 wizyt

93,468 zapytań

142,404 odpowiedzi

322,706 komentarzy

62,850 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...