Qt - świeżak
-
@void MainWindow::on_Generoj_clicked()
{min=ui->BMin->value(); max=ui->BMax->value(); tryb=ui->BTryb->currentIndex(); n=ui->BIlosc->value(); switch(tryb) { case 0: { FillRandomly(t,min,max,n); } case 1: { FillIncreasingly(t,min,max,n); } } QString tablicaNaTekst=""; for(int k=0; k<n; k++) tablicaNaTekst.append(QString::number(t[k])+" "); ui->Tablica->setText(tablicaNaTekst);
}@
Witam, jestem jak to mówią "zielony" jeśli chodzi o Qt. Napotkałem pewien problem (pewnie trywialny), którym nie mogę sobie poradzić. Ten fragment kodu odpowiada za zdarzenie po kliknięciu przycisku Generuj ( metoda MainWindow::on_Generoj_clicked() ). Chcę, aby po każdym jego naciśnięciu tekst w LineEdicie Tablica zmienił się na tekst, którym de facto jest tablica t, która została wygenerowana przez metody Fill. Problem jest taki, że za pierwszym razem wszystko "śmiga", lecz za każdym kolejnym nie dzieje się nic. Proszę o pomoc, oraz odesłanie do odpowiedniej dokumentacji/artykułów/linków, z których dowiem się skąd się wziął mój błąd. Miło by było jakby ktoś jednak wytłumaczył co się dzieje. :) Z góry dziękuję. :)
-
Nie wiemy, co to za zmienna 't' - nigdzie w podanym kodzie jej nie definiujesz. W związku z tym trudno podać jakieś rozwiązanie. To co podejrzewam, to że FillRandomly/ Increasingly dorzucają dane do tablicy 't', ale ty zawsze czytasz ją od zera do 'n', czyli dane początkowe. Ale to tylko moje zgadywanie
Polecam programować po angielsku
Nie musisz inicjalizować stringów (nie ma potrzeby robić dawać = "", zużywa to tylko niepotrzebnie pamięć)
-
Pomogłoby jakbyś pokazał funkcję FillRandomly,FillIncreasingly.
Czy zmianna t jest aby napewno zadeklarowana jako wskaźnik? Bo jezeli nie to jej wartośc się nie zmienia nawet po wykonaniu funkcji FillRandomly lub FillIncreasingly - zmienia się tylko w lokalnie utworznej zmiennej wewnatrz funkcji (najprawdopodobniej t to pusta tablica dlatego nic Ci się nie wyświetla).
Zobacz o wywoływaniu funkcji z argumentem będącym referencją.