如何显示屏幕并运行一些“后台”任务(不使用线程)

Posted

技术标签:

【中文标题】如何显示屏幕并运行一些“后台”任务(不使用线程)【英文标题】:How to display a screen and run some "background" tasks (not with thread) 【发布时间】:2011-12-12 08:51:34 【问题描述】:

我正在尝试为触摸屏开发 Qt 应用程序;此应用程序在 ARM 系统上运行,带有 Qt Everywhere 4.7.2。

在这个应用程序中,我需要显示一个特定的登录屏幕;然后用户按下“确定”按钮,我必须验证输入的信息是否正确。为此,我需要向我的服务器发送一条消息,同时我想显示一个等待屏幕。我已经有一些类可以让我在屏幕之间切换,并且可以正常工作。问题是:当我在显示请求之后放一些代码时,它被执行但屏幕不显示!

一个例子:

display_->CloseActualScreen();
display_->SetScreenId( MTO_Display::WAITING_SCREEN );
display_->ChooseScreenToDisplay();

这基本上是我在屏幕之间切换的方式; display_ 是一个特定的对象。 CloseActualScreen() 方法通过删除对象来关闭正在显示的屏幕。然后ChooseScreenToDisplay() 根据屏幕 ID 创建并显示一个新的小部件。如果需要,我可以放置这些方法的代码,但如果我这样使用它们,它们就会起作用。

那么,如果我这样做:

display_->CloseActualScreen();
display_->SetScreenId( MTO_Display::WAITING_SCREEN );
display_->ChooseScreenToDisplay();
CallToAnotherFunction();

CallToAnotherFunction() 执行得很好,但这里我的等待屏幕根本没有显示;我看不出这种行为的原因!

你有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

Arg x) 我在这个问题上搜索了两天,在这里询问后才找到解决方案... x) 我需要使用QApplication::processEvents 来处理所有事件,然后再执行其余代码。

【讨论】:

是的,你应该阅读这篇关于线程和事件的文章:developer.qt.nokia.com/wiki/Threads_Events_QObjects 特别是“事件和事件循环部分”

以上是关于如何显示屏幕并运行一些“后台”任务(不使用线程)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Kotlin-Multiplatform 在 iOS 应用程序的后台线程中运行任务?

在 iOS 中定期在后台线程中运行任务

后台任务永远运行?

如何在任务切换器中显示锁定屏幕并正确恢复

用于较长任务的后台线程

如何在ios中每n秒连续在后台线程中运行一个进程