2013-06-04 10 views

risposta

9
  1. Non utilizzare funzioni specifiche della piattaforma. Il grande vantaggio di Qt è che è abbastanza facile da trasportare. Non rovinare tutto solo con sleep

  2. Si, è possibile utilizzare QThread::sleep da QRunnable o QtConcurent solo in Qt 5, come si dichiara pubblica c'è:

vuoto QThread :: sonno (unsigned long secs) [statico protetto] // Qt 4.8

vuoto QThread :: sleep (unsigned long secs) [statico] // Qt 5,0

È possibile utilizzare mutex come soluzione alternativa per le versioni precedenti di Qt:

QMutex m(QMutex::NonRecursive); 
m.lock(); 
m.tryLock(timeout); 

Mutex non riuscirà a bloccare in modo ricorsivo e attenderà per il timeout.

3

Basta usare semplicemente ::sleep() non è in Qt è una funzione POSIX.1-2001.

Inoltre si può provare questo codice, perché QThread::sleep() chiama ::Sleep()

class mythreadhelper : public QThread 
{ 
    public: 
    static void mysleep(int ms) 
    { 
     return sleep(ms); 
    } 
}; 

Questa domanda è stato risposto a Qt Centre con una risposta di Nokia Qt Certified Developer.

+0

Come posso chiamare ':: sleep()'? – CDT

+0

Se si guarda il codice sopra, viene chiamato nella riga: 'return sleep (ms);'. Quindi scrivi semplicemente "sleep();" e metti la quantità di milisecondi tra parentesi. – totymedli

+0

il '::' implica che sia nell'ambito globale ed è facoltativo. Le funzioni del sistema o del sistema operativo sono spesso nell'ambito globale e talvolta solo per distinguere queste funzioni dalle funzioni dei membri. Un po 'come alcune persone metteranno 'this->' di fronte alle loro chiamate di funzione membro. – phyatt

Problemi correlati