c++ - 动态更改 QLineEdit TextBox 的内部循环

标签 c++ qt

我正在构建一些运行 while 循环的代码,并在循环内尝试使用 QLineEdit 的 setText() 更改几个文本框的内容。但是,仅仅在循环中调用 setText 是行不通的;文本框只会在代码运行后更改它们的实际值,而不是在每次迭代时更改。

我对 C++ 或 Qt 几乎没有经验,但我正在从事的项目必须使用它们。有帮助吗?

编辑:我猜这一定很简单,我只是因为不熟悉/知识而遇到麻烦,但如果需要更多信息,我会很乐意提供!

最佳答案

问题是 QT 需要控制权返回到 UI 线程的事件循环,以便更新 QLineEdit 的视觉外观。运行事件循环的快速而肮脏的方法是在每次调用 setText() 之后添加 QCoreApplication::processEvents()。修复它的正确方法是将设置文本框值的阻塞进程移动到另一个线程,公开一个 updateText(QString text) 信号,将它连接到 TextBox 的 setText( const QString & text) 插槽并在您希望更新文本时发出该信号。

有关更多详细信息,请参阅我对类似问题的回答:unexplained delay after QProgressBar finish loading

您可能还想查看一些关于 QThreads 和 Qt 信号槽系统的文档:http://harmattan-dev.nokia.com/docs/library/html/qt4/threads-qobject.html

关于c++ - 动态更改 QLineEdit TextBox 的内部循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404587/

相关文章:

c++ - 仅对 char* 和字符串重载函数

c++ - 引用参数生命周期

c++ - Erlang - 向 UDP 多播 session 发送消息

qt - 如何从 Qt 中的应用程序关闭已打开的浏览器

c++ - QShortcut 不工作

以编程方式进行 Qt GUI 设计

c++ - 有没有一种好方法,可以用 C++ 生成代码以通过网络发送函数参数?

c++ - VS2010 中的 MFC100d.dll 问题

c++ - qt预处理器

c++ - 与 Hudson 的持续集成和自动化测试 QWidgets