Wywoływanie cykliczne funkcji. Funkcja update okna.

Odpowiedz Nowy wątek
2018-08-10 10:29
0

Witam,
Mam trochę takie banalne pytanie, ale mnie to blokuje.

void Update()
{
    if(buttonExitClicked)
    {
        close();
    }
    else if(buttonDrawClicked)
    {
        draw();
    }
    else if(jakisBool)
    {
        mojaFunkcja();
        jakisBool = false;
    }
}

Może wyjaśnię to na przykładzie tej funkcji. Przytoczona przeze mnie funkcja włącza się przy odpaleniu programu i działa sobie w nieskończoność, czekając na wciśnięcie jakiegoś buttona i wykonanie danej funkcji.

I tu nasuwa się moje pytanie.
Czy aby w QT zrobić funkcję działającą na podobnej zasadzie muszę ustawić updatesEnabled na true i przeciążyć void QWidget::update(), aby dodać jakiś swój warunek, który będzie sprawdzany cały czas? Czy to jakoś inaczej się robi?
Chodzi mi o to, że jak funkcja pod jakimś buttonem zmieni jakąś wartość boolowską, to funkcja będzie działała tak jak funkcja, którą napisałem wyżej.

edytowany 1x, ostatnio: furious programming, 2018-08-11 15:11
Nie używaj prefiksów QT w tytułach wątków, skoro i tak w każdym dodajesz qt do tagów. - furious programming 2018-08-11 15:12

Pozostało 580 znaków

2018-08-10 11:58
0

A dlaczego nie? Jeśli ma być to okresowe wywoływanie to moim zdaniem się nadaje, chyba że nie zrozumiałem do końca problemu

Pozostało 580 znaków

2018-08-10 12:02
0

@MarekR22 no do tej funkcji przesyłam konkretne rejestry, wskaźnik na urządzenie i urządzenie odpowiada(każde wywołanie to jedna odpowiedź, nie odpowiada cały czas, muszę to wymusić).

Właśnie przez te wymuszenia wydaje mi się że QTimer może się nadać.

Pozostało 580 znaków

2018-08-10 12:04
0

Ja trochę nie rozumiem szczerze mówiąc, potrzebujesz czegoś co się wywołuje okresowo z jakąś częstotliwością czy może czegoś co się wywoła po otrzymaniu konkretnego komunikatu?

Pozostało 580 znaków

2018-08-10 12:10
2

QTimer owszem zadziała, ale zależnie od tego jaką ilość danych ściągasz będzie albo za powolny, albo za szybki.
Ryzykujesz, że aplikacja będzie dawała wrażenie ociężałej, albo dane nie będą się wyświetlać na bieżąco.

X lat temu robiłem dokładnie takie rzeczy, ściągałem dużą ilość danych przez jakieś dziwne złącze (GPIB) albo przez USB, albo przez (COM).
Wtedy używałem VISA (Virtual Instrument Software Architecture) od National Instruments. Fajna biblioteka, bo dostarczało abstrakcję na wiele urządzeń, na dodatek uprzędzenia nie musiały być podłączone bezpośrednio do komputera z aplikacją, ale można było udostępniać je przez sieć.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2018-08-11 09:53
0

Ale to jest spowodowane tylko tym, że po prostu funkcja może potrzebować czasu na pobieranie danych/jakieś obliczenia i dlatego nie wyświetli ich na bieżąco czy samo wywoływanie jej przez timer powoduje jakieś opóźnienia/większe obciążenia?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0