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

Qt int != std::int;

Object Storage Arubacloud
0 głosów
143 wizyt
pytanie zadane 13 kwietnia 2019 w C i C++ przez niezalogowany

Spotkałem się z nietypowym problemem czy możne ktoś wie z czego to wynika  int z biblioteki std całkiem inny int jak z QT? Dlaczego tak myślę?

Kompilator nie zgłasza błędu, a aplikacja się wywala jak mamy:

void Widget::on_lineEdit_textChanged(const QString &str)
{
     std::string str1= str.toStdString();
     int liczba1=std::stoi(str1); // "int  std";
     ui->lineEdit->setText(QString::number(liczba1)); // " int Qt";
}

a tu wszystko ok std

void Widget::on_lineEdit_textChanged(const QString &str)
{
     std::string str1= str.toStdString();
     int liczba1=std::stoi(str1);
     ui->lineEdit->setText(QString::fromStdString(std::to_string(liczba1)));
}

i tu też Qt,

void Widget::on_lineEdit_textChanged(const QString &str)
{

       int liczba1=str.toInt(nullptr,10);
       ui->lineEdit->setText(ui->lineEdit->text()); // dzięki za tą linijkę   @j23  
}

 

1 odpowiedź

0 głosów
odpowiedź 15 kwietnia 2019 przez Bondrusiek Maniak (61,370 p.)
wybrane 15 kwietnia 2019
 
Najlepsza

Witam,

pierwszą aplikację nie działa gdyż funkcja std::stoi może wyrzucić wyjątek a w tym programie nigdzie go nie łapiesz

terminate called after throwing an instance of 'std::invalid_argument'

what(): stoi

Jeśli podasz tam dobry argument to wszystko powinno być dobrze

Przykład:

    QString strLiczba = "1"; // w przypadku dobrego argumentu liczby to jest dobrze 
    std::string str1 = strLiczba.toStdString();
    int liczba = std::stoi(str1);

    QLineEdit *lineEdit = new QLineEdit();
    lineEdit->setText(QString::number(liczba));
    lineEdit->show();

 

komentarz 15 kwietnia 2019 przez niezalogowany
Fakt przy parokrotnym przebudowaniu programu, nie wykłada się, to ok. Szkoda że nie zapisałem sobie tej wersji gdzieś na pliku. To bym wrzucił. Teraz połączenie miedzy metodami zrobiłem przez składową klasy TWidget, ale jak mi się trafi taka sytuacja to nie omieszkam tu dopisać. Jak opanuje parę programików to wtedy się zajmę wyjątkami.

Podobne pytania

0 głosów
2 odpowiedzi 176 wizyt
pytanie zadane 24 września 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
0 głosów
1 odpowiedź 135 wizyt
pytanie zadane 31 stycznia 2019 w C i C++ przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 237 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...