具体的なペインタにQChart
(コアにはQGraphicsWidget
)をレンダリングしたいとします。たとえば、QSvgGenerator
です。QGraphicsViewを使用しないでQChartをレンダリングする
私は、トピックhttps://forum.qt.io/topic/38352/rendering-qgraphicsitem-without-qgraphicsscene/2次読んで、私のコードでそれを実装しました:最初の1が第二、直接QChart
を描くためである - QGraphicsView
レンダリング:
QBuffer b;
QSvgGenerator p;
p.setOutputDevice(&b);
QSize s = app->chart()->size().toSize();
p.setSize(s);
p.setViewBox(QRect(0,0,s.width(),s.height()));
QPainter painter;
painter.begin(&p);
painter.setRenderHint(QPainter::Antialiasing);
app->chart()->paint(&painter, 0, 0); // This gives 0 items in 1 group
m_view->render(&painter); // m_view has app->chart() in it, and this one gives right image
qDebug() << "Copied";
painter.end();
QMimeData * d = new QMimeData();
d->setData("image/svg+xml",b.buffer());
QApplication::clipboard()->setMimeData(d,QClipboard::Clipboard);
コメントを持つ2つの行があります。
私は既にsetViewBox
でプレイしようとしましたが、それを巨大な値に設定することは役に立ちません。 QSvgGenerator
の代わりにQImage
を使用した場合の効果は同じですが、空の画像が表示されます。
質問はなぜQChart->paint()
私に空の絵を与えるのですか?
EDIT:作業コードはビットバケットに見つけることができる:https://bitbucket.org/morodeer/charts_test_2/commits/b1eee99736beb5e43eae2a40ae116ee07e01558f
ありがとうございます。これは多くの助けとなりました。 – Waldemar