0

情况:

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

问题:

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

  2. 同样的问题发生在程序启动时,变量的初始值应该与 QWidgets 当前状态同步。

有人有解决上述问题的方法吗?

4

1 回答 1

0

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

void MainWindow::loadSettings(Settings *settings)
{
    foreach (QWidget *w, settingsWidgets)
    {
        w->blockSignals(true);
        w->loadSettings(settings);
        w->blockSignals(false);
    }
}
于 2013-05-23T10:14:33.820 回答