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

Qt Creator QThreat::sleep(sec)

Object Storage Arubacloud
0 głosów
793 wizyt
pytanie zadane 20 lipca 2016 w C i C++ przez kacperdyba Gaduła (3,290 p.)

Cześć,

 

Od pewnego czasu pisze sobie coś tam w Qt Creatorze, czasem wychodzi, czasem mniej. Ale ostatnio natrafiłem na problem którego ni jak nie mogę rozwiązać. Piszę sobie prostą grę w pamięć, plansza 4x4 karty trzeba zapamiętać gdzie która jest i "zrzucić" wszystkie. Okodowanie wszystkiego nie zajeło mi dużo czasu, wszystko działa prócz jednej rzeczy. po kliknięciu na 1 kartę zostaje ona odsłonięta, ale po kliknięciu w 2 powinna ona zostać odsłonięta, a następnie zależnie od rezultatu usunięta lub powrotnie zakryta. Cały problem polega na tym, że zanim karta zdąży zostać odsłonięta i pokazana automatycznie zostaje albo zakryta (wraz ze wcześniejszą kartą) albo usunięta bez pokazania.

 

I tu rodzi się pytanie: jak zrobić tak aby karta przez moment widniała a następnie znikała? Próbowałem po odsłonięciu urzyć opcji QThreat::sleep(1) (sleep odlicza czas w sekundach, próbowałem też 1000), ale rezultat jest taki że karta nadal nie zostaje odsłonięta tylko program czeka 1s a następnie dopiero zrzuca kartę tak jak poprzednio. Czy ktoś wie jak to naprawić? Dołączam fragmęt kodu, a dokładniej funkcji realizującej pojawianie się i znikanie kart.

 

void MainWindow::set(int a)
{
    switch(card[a])
    {
    case 0:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/as_wino.png');");
        break;
    case 1:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/as_czerwień.png');");
        break;
    case 2:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/as_dzwonek.png');");
        break;
    case 3:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/as_żołądź.png');");
        break;
    case 4:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/kr_wino.png');");
        break;
    case 5:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/kr_czerwień.png');");
        break;
    case 6:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/kr_dzwonek.png');");
        break;
    case 7:
     cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/kr_żołądź.png');");
        break;
    }

    if (active == true)
    {
//tutaj daje sleep
        if(card[a] == card[last])
        {

            cardsbutton[a]->close();
            cardsbutton[last]->close();
        }
        else
        {
            cardsbutton[a]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/r.jpg');");
            cardsbutton[last]->setStyleSheet("width: 86; height: 129; background-image: url('C:/Users/Kacper/Desktop/karty/r.jpg');");
            cardsbutton[last]->setEnabled(true);
        }
        active = false;
    }
    else
    {
        last = a;
        active = true;
        cardsbutton[a]->setDisabled(true);
    }
}

 

1 odpowiedź

+1 głos
odpowiedź 20 lipca 2016 przez niezalogowany

Sleep usypia wątek więc siłą rzeczy aplikacja przestaje byś responswyna - sleep to zły trop.

Wykorzystaj klasę [QTimer] i np metodę singleShot() do wywoływania funkcji odpowiedzialnej za ukrywanie karty po określonym czasie

Podobne pytania

0 głosów
0 odpowiedzi 92 wizyt
+1 głos
1 odpowiedź 359 wizyt
0 głosów
1 odpowiedź 872 wizyt
pytanie zadane 4 listopada 2017 w C i C++ przez Michulec7 Nowicjusz (170 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 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!

...