我正在构建一些运行 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/