我正在开发一个项目,该项目使用Qt的QCustomPlot插件实时获取实时数据。显示器具有黑色背景颜色,并且多个数据通道的颜色不同。截取屏幕截图时,我们希望打印机友好,因此背景为白色,所有数据均为黑色。我在考虑这样的解决方案:
这首先不起作用,因为系统无法及时更改颜色以截取屏幕截图。所以我使用了QApplication :: processEvents(),它在我的Mac上都有效。
但是,它不适用于Windows 7(这是必需的)。任何想法该怎么做?
代码:
QSting fileLocation = "...";
toggleColors(false); //function to toggle the colors
QApplication::processEvents();
QPixmap shot = grab();
toggleColors(true);
shot.save(fileLocation, "png");
再次。它适用于Mac,但不适用于Windows。
更新1。 toggleColors的内容包括:
if(enable)
ui->plot->setBackground(QBrush(Qt::black));
else
ui->plot->setBackground(QBrush(Qt::white));
ui->plot->repaint();
我也试过了ui->plot->update()
。
答案 0 :(得分:0)
我不确定Windows上的问题是什么,但我建议您在给定的小部件上调用QWidget :: update()。这迫使下一次更新重新渲染。
另一方面,我不确定为什么toggleColors()没有以某种方式导致这种情况发生。
另外,请确保QWidget :: setUpdatesEnabled(bool)未设置为" false。"
答案 1 :(得分:0)
问题似乎在于QCustomPlot
。通过执行特定于ui->plot->replot()
而非QCustomPlot
的{{1}}来解决此问题。