gpt4 book ai didi

java - QT Jambi - QLCD号码实时更新

转载 作者:行者123 更新时间:2023-12-02 00:25:37 24 4
gpt4 key购买 nike

在我的大学,我们正在使用 QT Jambi (Java) 和 Eclipse 集成来处理界面。我想改进我的电梯界面的设计。

主要问题是我想实时更新 QLCDNumber 与楼层。我模拟电梯工作的方法是在两层楼之间执行 Thread.sleep(1000),这样,我的 QLCDNumber 将显示“动画”,显示“1...2...3...4” ”。问题是QLCDNumber只显示1和4,没有动画。

所以,例如(续),我编写的代码是这样的:

private void simulate(int floor){
while(actualFloor < floor){
try{
Thread.sleep(1000);
}catch(InterruptedException e){};
actualFloor++;
ui.LCDfloor.display(actualFloor);
}
}

为什么这段代码只显示一楼和最后一层?抱歉,如果您不明白我想要什么,我的英语每天都在进步:)

提前谢谢您。

*请注意 LCDFloor 是 QLCDNumber 小部件的名称

最佳答案

看来您有两个问题:

  1. (我猜)您正在调用 Thread.sleep()在 GUI 线程上。换句话说,当您调用模拟时,您是在与其余 gui 操作相同的线程上执行此操作。这会导致整个 GUI 暂停。

  2. 您从未给 Qt 真正更新 UI 的机会。当您调用ui.LCDfloor.display(actualFloor)时,绘制事件会排队,以便可以更新 UI,但您不会让 UI 有机会实际执行绘制事件,而是继续循环,这会阻止 UI 在模拟完成之前更新。

您有两个基本修复:

  1. 别 sleep ,这设计很糟糕。相反,使用计时器和信号来模拟变化。
  2. 使用 processEvents 强制处理事件.

另请记住,您无法从非 GUI 线程更新 GUI 元素。由于这是家庭作业,剩下的就交给你了:)。

关于java - QT Jambi - QLCD号码实时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com