Java QT-Jambi-实时更新QLCDNumber
在我的大学里,我们正在使用接口,使用QtJambi(Java)和Eclipse集成。 我想改进我的电梯界面设计 主要的问题是我想用楼层实时更新QLCDNumber。 我要做的是模拟电梯工作,在两层楼之间做一个线程。sleep(1000),这样,我的QLCDNumber就会显示一个动画,上面写着“1…2…3…4”。问题是QLCDNAMER只显示1和4,没有动画 例如(续),我编写的代码如下:Java QT-Jambi-实时更新QLCDNumber,java,qt,qt-jambi,Java,Qt,Qt Jambi,在我的大学里,我们正在使用接口,使用QtJambi(Java)和Eclipse集成。 我想改进我的电梯界面设计 主要的问题是我想用楼层实时更新QLCDNumber。 我要做的是模拟电梯工作,在两层楼之间做一个线程。sleep(1000),这样,我的QLCDNumber就会显示一个动画,上面写着“1…2…3…4”。问题是QLCDNAMER只显示1和4,没有动画 例如(续),我编写的代码如下: private void simulate(int floor){ while(actualFlo
private void simulate(int floor){
while(actualFloor < floor){
try{
Thread.sleep(1000);
}catch(InterruptedException e){};
actualFloor++;
ui.LCDfloor.display(actualFloor);
}
}
private void模拟(内部楼层){
而(实际楼层<楼层){
试一试{
睡眠(1000);
}catch(InterruptedException e){};
实际地板++;
ui.LCDfloor.display(实际楼层);
}
}
为什么这个代码只显示第一层和最后一层?
对不起,如果你不明白我想要什么,我的英语每天都在进步:)
先谢谢你
*请注意,LCDFloor是qlcdnumberwidget的名称。看起来您有两个问题:
Thread.sleep()
。换句话说,当您调用simulate时,您在与其他gui操作相同的线程上执行此操作。这会导致整个gui暂停ui.LCDfloor.display(actualFloor)
时,绘制事件将排队,以便可以更新ui,但不是给ui实际执行绘制事件的机会,而是继续执行循环,以防止ui在模拟完成之前被更新还要记住,您不能从非GUI线程更新GUI元素。因为这是家庭作业,我将把其余的留给你:)。看起来你有两个问题:
Thread.sleep()
。换句话说,当您调用simulate时,您在与其他gui操作相同的线程上执行此操作。这会导致整个gui暂停ui.LCDfloor.display(actualFloor)
时,绘制事件将排队,以便可以更新ui,但不是给ui实际执行绘制事件的机会,而是继续执行循环,以防止ui在模拟完成之前被更新还要记住,您不能从非GUI线程更新GUI元素。由于这是作业,我将把其余的留给您:)。如果您使用的是Qt>=4.6,您几乎可以完全模拟电梯,在
QLCDNumber
值属性上仅使用QPropertyAnimation
。如果您使用的是Qt>=4.6,您几乎可以使用QLCDNumber
值属性上的QPropertyAnimation
完全模拟电梯。谢谢您的回答。我会努力的。我将学习信号和计时器。我完全理解我的程序中发生了什么。是的,这在GUI线程上:谢谢你的回答。我会努力的。我将学习信号和计时器。我完全理解我的程序中发生了什么。是的,这在GUI线程上:P