Visualizzazione post con etichetta Qt. Mostra tutti i post
Visualizzazione post con etichetta Qt. Mostra tutti i post

mercoledì 9 marzo 2016

Esecuzione differita QT con lambda C++ 11

Questo è un esempio in Qt, di come creare un azione che viene eseguita dopo tot secondi, senza interrompere il thread di esecuzione del codice. Al "singleShot" passo un lambda di C++ 11, per eseguire un metodo allo scadere del tempo.
//Es.: Codice nello scope di una funzione
...

//Simulazione ritardo hardware
QTimer::singleShot(2000, this, [=]() {
 eseguiDopo();
});

...

//Qui arrivo subito, mentre dopo 2 secondi viene eseguito "eseguiDopo()"
...

venerdì 4 luglio 2014

From C# to Qt: Thread sleep

Eccomi alla prima parte della rubrica dedicata al confronto fra C# e Qt. In C# quando vogliamo mettere in pausa il thread corrente in cui ci troviamo per tot millisecondi usiamo la funzione statica: Thread.Sleep([numero di millisecondi]).
In Qt invece ci sono almeno 3 possibilità diverse:
//METODO 1:
//Usare la classe QTest
QTest::qSleep(100); // blocca l' event processing
QTest::qWait(100);  // non blocca l' event processing

//METODO 2:
//Usare QWaitCondition / QMutex
QWaitCondition waitCondition;
QMutex mutex;

waitCondition.wait(&mutex, 100);

//METODO 3:
//Oppure fare derivare la nostra classe da QThread.
class Thread : public QThread
{
public:
    static void msleep(int ms)
    {
        QThread::msleep(ms);
    }
};

Thread::msleep(100);

giovedì 1 dicembre 2011

PyQt maemo: Scrollare del testo

qte = QtGui.QTextEdit()
scroller = qte.property("kineticScroller").toPyObject()
scroller.setEnabled(True)