我正在开展一个项目,该项目使用 Qt 的 QCustomPlot 插件实时呈现实时获取的数据。显示器具有黑色背景色,并且多个数据通道的颜色不同。截屏时,我们想让它易于打印,所以背景是白色的,所有数据都是黑色的。我正在考虑这样的解决方案:
- 通过操纵图形对象的指针以我想要的方式更改所有颜色
- 使用 QWidget::grab() 抓取屏幕截图以获取 QPixmap
- 将所有颜色改回正常
起初这不起作用,因为系统无法及时更改颜色以进行截屏。所以我使用了 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()
。