如何显示屏幕并运行一些“后台”任务(不使用线程)
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 特别是“事件和事件循环部分”以上是关于如何显示屏幕并运行一些“后台”任务(不使用线程)的主要内容,如果未能解决你的问题,请参考以下文章