同步内部变量和小部件的值

时间:2013-05-23 09:33:23

标签: c++ qt

情况:

有一个QGLWidget,可以显示我的数据。还有许多变量来控制可视化的参数。用户可以通过与表单上的多个QWidgelet交互来更改变量的值,从而影响可视化方法。 QWidgets通过SIGNAL / SLOT机制与变量连接。重要的是每个SLOT最终都会在QGLWidget上进行更新(重新渲染)。

问题:

  1. 当用户加载带有设置的文件时,其中存储了一组参数,(多个)QWidgets的状态与变量的值一起被更改。这导致QGLWidget的多次更新(重新渲染)。首先,这是不必要的,因为只有最后一次更新就足够了。其次,它会降低程序的速度,因为渲染步骤很昂贵。

  2. 当程序启动时,当变量的初始值应与QWidgets当前状态同步时,会出现同样的问题。

  3. 有没有人能解决上述问题?

1 个答案:

答案 0 :(得分:0)

我建议您阻止加载数据的信号,如下所示:

void MainWindow::loadSettings(Settings *settings)
{
    foreach (QWidget *w, settingsWidgets)
    {
        w->blockSignals(true);
        w->loadSettings(settings);
        w->blockSignals(false);
    }
}