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()
た。