QWidget没有持续更新/重新绘制



我正在构建一个类似cad的应用程序,当视口对象选择发生变化时,会发出一个包含新对象的QHash的信号。这个信号被它的文档子窗口捕获,它从它们中取出新的属性/设置UI,销毁主窗口属性窗格中显示的现有属性,并用新的属性/设置代替它们。

使用print语句,我知道这是有效的-所有的信号/插槽连接都正确地触发。但是,属性小部件的重新绘制非常不一致,如果我直接在主窗口上执行操作(按下按钮,将鼠标悬停在小部件上),则有问题的小部件将更新。但是当我只是在视窗中选择对象时,属性窗格"错过"更新,因此它最终显示以前对象的属性-我知道这对我来说不是问题,因为如果我移动窗口或与小部件交互(触发重新绘制),小部件神奇地变得正确。

这些函数不是从单独的线程中调用的。如果我在代码中手动调用update(),没有任何变化。如果我直接调用repaint()(我知道我不应该),它的工作效果会好一点,但它有点不稳定-有时小部件根本不绘制。

有人有过类似的经历吗?

您是否尝试过使用静态函数QApplication::processEvents()?

你可能想做QApplication::processEvents(QEventLoop::ExcludeUserInputEvents),这可以防止应用程序在processEvents返回给调用者之前处理鼠标点击或按键。

相关内容

  • 没有找到相关文章

最新更新