Qt停止应用程序一段时间
Qt Stop application for a certain time
我正在开发一个Qt应用程序。在程序中的某个时刻,我必须暂停应用程序,然后启动一个函数。
QTimer::singleShot(10000, this, SLOT(testFuntion()));
qDebug() << "after Singleshot";
这就是我的问题所在。计时器启动,我可以看到testFuntion()
的输出,但它不会暂停应用程序。我可以在我的SingleShot之后立即看到qDebug
的输出,10秒之后看到testFuntion()
的输出。
你能帮我解决这个问题吗?或者有没有其他命令可以让我的应用程序暂停一段时间,然后运行一个函数?
它正在以应有的方式工作。此行:
QTimer::singleShot(10000, this, SLOT(testFuntion()));
将在计时器滴答作响时启动该功能。但是,计时器独立于应用程序的其余部分运行,因此在执行此行之后,主应用程序将继续到qDebug()
行。
如果你真的想暂停应用程序(我真的不建议这样做,因为应用程序变得没有响应),你可以使用sleep()
和usleep()
功能。
更好的方法是为用户显示某种通知(可能是进度条)。
我找到了一个非常简单的解决方案。
首先,如果你像这个一样使用计时器
QTimer *test = new QTimer();
test->isSingleshot(true);
connect(test, SIGNAL(timeout()), this, SLOT(testFunction()));
test->start(10000)
test->isActive
正在工作。
但我只需要在我的应用程序中启动另一个计时器,只有当这个检查为真时。
把事情搞清楚一点。我检查文本文件中是否存在某个值。如果没有,我会在5分钟后再试一次。如果是他们,我会启动一个计时器来计算大量的时间。但只有当他从文件中取出Value时,这个计时器才会工作。因此,如果我得到这个值,我会启动1秒计时器。在我在MainWindows Construktor中启动这个计时器之前。如果这个计时器没有运行,一切都会正常工作。
用户收到一条带有描述的消息,然后启动我的主窗口,什么都没有挂起。
谢谢你的帮助问候Chris
您可以使用QEventLoop。与sleep
相比,它的优势在于不会使应用程序无响应。它基本上创建了一个嵌套的事件循环。
QEventLoop loop;
QTimer::singleShot(10000, &loop, SLOT(quit()));
loop.exec();
qDebug() << "after Singleshot";
- 在做一段时间内检查字符的无限循环
- ExtTextOut 文本的持续闪烁,在一段时间后,文本将恢复为默认字体
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- ::grpc::ServerReaderWriter 对象在另一个线程中一段时间后无法调用
- 一段时间后 CPU 使用率高
- 有没有办法在一段时间后将流程从流出中分离出来
- 在一段时间内更改标签文本
- 布尔函数在一段时间内不起作用
- 解决PNP在一段时间后返回坏的rvec和tvec
- 分叉程序在<defunct>一段时间后给出进程
- 程序编译和运行,但一段时间后,它停止使用Typedef关键字在CPP上工作
- 一段时间后,C++应用程序占用100%的cpu周期
- 程序在一段时间后终止"std::bad_alloc"
- LoadBitmap在程序运行一段时间后返回NULL
- Qt事件后,长例程冻结了我的应用程序一段时间
- Pthreads程序工作一段时间,然后停止
- 什么会导致我的程序在一段时间后不使用所有的内核
- Qt停止应用程序一段时间
- 我用Turbo c++编写的c++程序过了一段时间就挂了
- 性能问题与c++(使用vc++ 2010):在运行时,我的程序似乎随机等待一段时间