2009-03-25 28 views

答えて

8

あなたは、本質的に、ダイアログのピックスマップ表現を取得するためにgrabWidgetを使用することができますがpixmapのピクセルを印刷します。つまり、ダイアログには画面の解像度がラスタライズされ、プリンタの解像度にスケーリングされます。これによりアーティファクトが発生する場合もあれば、発生しない場合もあります。

これを行うもう1つの方法は、塗料デバイスを使用するQWidget::render()関数を使用することです。この方法で、プリンタをペイントデバイスとして渡すことができます。このダイアログは、プリンタの解像度でプリンタに「描画」されるようになりました。

8

QPixmap::grabWidget(または外部ウィンドウの場合はQPixmap::grabWindow)を使用してください。このような 何か:

QPixmap pix = QPixmap::grabWidget(myMainWindowWidget); 

知らんあなたが本当にそうであれば、それをプリンタに印刷することを意味する場合:

QPrinter printer(QPrinter::HighResolution); 
QPainter painter; 
painter.begin(&printer);  
painter.drawPixmap (0, 0, &pix);  
painter.end(); 
+0

pix.grabWidget(myMainWindowWidget)が失敗します。 私は以下を使用する必要があります。 QPixmap pix = QPixmap :: grabWidget(myMainWindowWidget); – PiedPiper

+0

ああ、それは静的な方法だから。私は私の答えを編集しました。 –

+0

QPixmap :: grabWidgetは私が必要としていたものの十分なものでしたが、AriyaのソリューションQWidget :: render()はさらに優れています – PiedPiper

関連する問題