查看完整版本: [-- Qt程序中用了QTest::qWait(800);//延迟0.8秒,但是运行exe程序会同时弹出一个DOS窗口 --]

QTCN开发网 -> Qt基础编程 -> Qt程序中用了QTest::qWait(800);//延迟0.8秒,但是运行exe程序会同时弹出一个DOS窗口 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

ustone 2018-05-25 13:39

Qt程序中用了QTest::qWait(800);//延迟0.8秒,但是运行exe程序会同时弹出一个DOS窗口


Qt程序中用了QTest::qWait(800);//延迟0.8秒,pro文件加了QT += testlib,但是运行exe程序会同时弹出一个DOS窗口,怎么去掉呢?

dbzhang800 2018-05-25 20:57
QTest 是用于测试的,控制台是用于输出调试数据的。

换言之,不要在正式代码中使用QTest,要实现延时有很多方法

ustone 2018-05-25 23:56
我自己写了个Delay函数,不过只能在Windows下了。

ustone 2018-05-25 23:56
dbzhang800:QTest 是用于测试的,控制台是用于输出调试数据的。
换言之,不要在正式代码中使用QTest,要实现延时有很多方法 (2018-05-25 20:57) 

我自己写了个Delay函数,不过只能在Windows下了。

dbzhang800 2018-05-28 11:46
ustone:我自己写了个Delay函数,不过只能在Windows下了。 (2018-05-25 23:56) 

写一个和 QTest::qWait 一样的也不难

圣域天子 2018-05-28 11:58
QThread::sleep(...)
QThread::msleep(...)

dbzhang800 2018-05-28 16:54
圣域天子:QThread::sleep(...)
QThread::msleep(...) (2018-05-28 11:58) 

sleep 和 这个wait还是有区别的,sleep是真的等待,wait只是又启动一个事件循环,

ustone 2018-05-28 20:04
dbzhang800:写一个和 QTest::qWait 一样的也不难 (2018-05-28 11:46) 

能提示一下吗?

ustone 2018-05-28 20:05
圣域天子:QThread::sleep(...)
QThread::msleep(...) (2018-05-28 11:58) 

我需要的是等待的时候能处理事件。

dbzhang800 2018-05-28 20:08
之前的blog,有些话有些过时,不过代码还可以看

https://blog.csdn.net/dbzhang800/article/details/6300425

ustone 2018-05-29 12:59
dbzhang800:之前的blog,有些话有些过时,不过代码还可以看
https://blog.csdn.net/dbzhang800/article/details/6300425 (2018-05-28 20:08) 

谢谢,信息量很大,我参考写了一个Qt自定义延时函数,帮忙看看:
void Wait(int ms)
{
    QElapsedTimer timer;
    timer.start();
    do {
        QCoreApplication::processEvents(QEventLoop::AllEvents, ms);
        #ifdef Q_OS_WIN
            Sleep(1);
        #else
            nanosleep(1);
    } while (timer.elapsed() < ms);
}

ustone 2018-05-29 13:07
貌似应该:
        #ifdef Q_OS_WIN
            Sleep(1);
        #else
            struct timespec ts = { 0, 1 * 1000 * 1000 };
            nanosleep(&ts, NULL);

ustone 2018-05-29 13:10
漏了#endif
Qt自定义延时函数:
void Wait(int ms)
{
    QElapsedTimer timer;
    timer.start();
    do {
        QCoreApplication::processEvents(QEventLoop::AllEvents, ms);
        #ifdef Q_OS_WIN
            Sleep(1);
        #else
            struct timespec ts = { 0, 1 * 1000 * 1000 };
            nanosleep(&ts, NULL);
        #endif
    } while (timer.elapsed() < ms);
}


查看完整版本: [-- Qt程序中用了QTest::qWait(800);//延迟0.8秒,但是运行exe程序会同时弹出一个DOS窗口 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled