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

Qt creator problem

Object Storage Arubacloud
0 głosów
164 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 199 wizyt
pytanie zadane 23 lipca 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 20 lipca 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 364 wizyt

92,555 zapytań

141,404 odpowiedzi

319,558 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...