Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[QTC++][PYTANIE]Radio buttony i opcje do wyboru


Rekomendowane odpowiedzi

Opublikowano

Mam w swojej aplikacji 4 RadioButtony. Kazdyn button odpowiada osobnej akcji. Nazwy to dodawanie,odejmowanie,mnozenie,dzielenie.

 

Za każdym razem jeżeli klikne Buttona(Oblicz) który ma za zadanie wyliczyć coś to MNOŻY ??

Tutaj mój kod;

int MainWindow::oblicz()
{
  int liczb1 = ui->licz1->text().toInt();
  int liczb2 = ui->licz2->text().toInt();
  int wynik;
   if(ui->dodawanie,SIGNAL(clicked(bool)))
   {
       wynik=liczb1 + liczb2;
       QString wynik1 = QString::number(wynik);
       ui->wynik->setText(wynik1);
   }
   if(ui->odejmowanie,SIGNAL(clicked(bool)))
   {
       wynik=liczb1 - liczb2;
       QString wynik1 = QString::number(wynik);
       ui->wynik->setText(wynik1);
   }
   if(ui->dzielenie,SIGNAL(clicked(bool)))
   {
       wynik=liczb1 / liczb2;
       QString wynik1 = QString::number(wynik);
       ui->wynik->setText(wynik1);
   }
   if(ui->mnozenie,SIGNAL(clicked(bool)))
   {
       wynik=liczb1 * liczb2;
       QString wynik1 = QString::number(wynik);
       ui->wynik->setText(wynik1);
   }
   return 0;
}

hcq0.png


Opublikowano

Operator ',' zwraca to co znajduje się po jego prawej stronie. Wiec w każdym ifie wystarczy, że

SIGNAL(clicked(bool))

będzie prawdziwe. To sprawia, że ostatnie zawsze wykonuje się mnożenie nadpisując wyniki z poprzednich działań

Powinieneś użyć operatora '&&'

 

btw.

SIGNAL(clicked(bool)) sprawdzaj tylko raz. Jeśli true to wtedy wykonuj odpowiednie działania

Opublikowano

Sopelek ale tam są RadioButtony i to sprawdza ktory został kliknięty :) zaraz sprawdze te twoje

 

@Edit

 

Sopel podaj przykład jakiś bo nie za bardzo czaje z "&&" ;p

hcq0.png


Opublikowano
int MainWindow::oblicz()
{
  int liczb1 = ui->licz1->text().toInt();
  int liczb2 = ui->licz2->text().toInt();
  int wynik;
       if(ui->dodawanie && SIGNAL(clicked(bool)))
       {
               wynik=liczb1 + liczb2;
               QString wynik1 = QString::number(wynik);
               ui->wynik->setText(wynik1);
       }
       if(ui->odejmowanie && SIGNAL(clicked(bool)))
       {
               wynik=liczb1 - liczb2;
               QString wynik1 = QString::number(wynik);
               ui->wynik->setText(wynik1);
       }
       if(ui->dzielenie && SIGNAL(clicked(bool)))
       {
               wynik=liczb1 / liczb2;
               QString wynik1 = QString::number(wynik);
               ui->wynik->setText(wynik1);
       }
       if(ui->mnozenie && SIGNAL(clicked(bool)))
       {
               wynik=liczb1 * liczb2;
               QString wynik1 = QString::number(wynik);
               ui->wynik->setText(wynik1);
       }
       return 0;
}

Weteran
Opublikowano

Dużo w tym błędów.

Przede wszystkim czemu funkcja(slot) jest zadeklarowana jako int i nie zwraca żadnej wartości i raczej nie będzie zwracać? Lepiej nadać jej wartość void.

 

A tego

if(ui->dodawanie,SIGNAL(clicked(bool)))

W ogóle nie rozumiem. Co tu robi jakiś sygnał i to w dodatku bezpański? Mimo tego, że kompilator nie zareagował na to(Bo kompilator jest do c++, a nie Qt) , to i tak jest to karygodne.

Jeżeli chcesz sprawdzić pozycje radiobutton musisz napisać coś takiego:

if(ui->dodawanie->isChecked())

 

To wszystko, powinno już działać.

Weteran
Opublikowano

XAULIN JA SIE UCZEE ;p Nie krzycz na mnie bo sie jąkał będe :)

A czy ja krzyczę? Nie postawiłem żadnego wykrzyknika.

Po prostu nie używam emot`ek.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...