2012-12-21 17 views
0

我有以下功能delay.cpp如何在Qt的Mainwindow.cpp中使用qSleep?

void QTest::qSleep(int ms) 
    { 
     QTEST_ASSERT(ms > 0); 

    #ifdef Q_OS_WIN 
     Sleep(uint(ms)); 
    #else 
     struct timespec ts = { ms/1000, (ms % 1000) * 1000 * 1000 }; 
     nanosleep(&ts, NULL); 
    #endif 
    } 

,它是在delay.h定義爲

void qSleep(int); 

我想在Qt來使用此功能在mainwindow.cpp。當我使用在主窗口的成員函數此功能,

void MainWindow::xyz() 
{ 
    qsleep(1000); 
} 

編譯器說,這是不是在,即使我已將此範圍內聲明delay.h在mainwindow.cpp.can有人告訴我如何使用它?

+0

是從'QTest'繼承的'MainWindow'? – akira

回答

1

您已將sleep函數聲明爲QTest類的成員,因此您不能將其稱爲自由函數。讓它的QTest靜態成員,然後您可以:

QTest::sleep(time); 

但它是一個壞主意,在GUI代碼睡覺:它凍結您的應用程序。這不是用戶友好的。

你應該嘗試做一些你試圖通過QTimer延期的電話或類似的策略。