视图如何在幕后更新

How does View get updated behind the scenes?

本文关键字:更新 视图      更新时间:2023-10-16

因此,当我在qlabel上使用setText()时,qt会自动更新我的视图/GUI,并显示新的文本,但是幕后会发生什么?使用setText()吗?

之类的函数时,是否有更新功能会自动调用。

谢谢!

您应该检查此链接中的基本文档。

内部系统要复杂一些,但是通常,它遵循观察者模式。这种机制允许检测用户行动或变化状态,并响应此操作。

低级交互,例如通过事件系统实现屏幕

来实现屏幕

在QT中,事件是从抽象QEVENT类得出的对象,它代表了在应用程序中或由于应用程序需要了解的外部活动而发生的事物。可以通过QOBject子类的任何实例接收和处理事件,但它们与小部件特别相关。本文档描述了如何在典型应用程序中交付和处理事件。

因此,关于显示过程,有一个专门的事件。Qwidget对象处理/订阅paintEvent,请参阅QWidget::paintEvent

可以在一个子类中重新完成此事件处理程序,以接收事件通过的油漆事件。油漆事件是重新粉刷所有小部件的要求。

当您致电时,QLineEdit::setText()时,小部件将在下次触发显示事件的情况下重新粉刷,以操作系统配置,刷新速率等。

对于高级相互作用,QT使用基于信号/插槽机制的类似模式:

观察者模式在GUI应用中无处不在,通常会导致一些样板代码。创建了QT,它是通过删除此样板代码并提供漂亮且干净的语法的想法,信号和插槽机制是答案。