【Qt】QtエクスポートPDF、Android、Qtスクリーンショット機能実現


一:Qt PDFエクスポート
ここで私は3つの画像(QPIxmap:スクリーンショット)を導出したpdfに描きました.そのうち1.2枚目の画像は1ページ目、3枚目の画像は2ページ目です.
コード:
    QPrinter printer_pixmap(QPrinter::HighResolution);
    printer_pixmap.setPageSize(QPrinter::A4);  //       A4
    printer_pixmap.setPrintRange(QPrinter::AllPages);
    printer_pixmap.setOutputFormat(QPrinter::PdfFormat);  //       pdf
    printer_pixmap.setOutputFileName(outfilepath);   //      


    QPainter painter_pixmap;
    painter_pixmap.begin(&printer_pixmap);
    QRect rect = painter_pixmap.viewport();
    int multiple = rect.width()/pixmap1.width();
    painter_pixmap.scale(multiple*0.675, multiple*0.675); //   (       ) pdf   multiple-1 
    painter_pixmap.drawPixmap(120, 0, pixmap1);  //  1
    painter_pixmap.drawPixmap(120, 580, pixmap2);//  2
    printer_pixmap.newPage();  //  
    painter_pixmap.drawPixmap(120, 0, pixmap3);//  3
    painter_pixmap.end();

2:AndroidとQtのスクリーンショット機能の実現を比較する:
Androidスクリーンショットは次のとおりです.
void android.view. View.draw(
Canvas canvas)
コード:
//   View    (    )
	public static void writeImage(File previewTempFile,View v){  
		try {  
			Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
		            Bitmap.Config.ARGB_8888);
		    Canvas canvas = new Canvas(bitmap);
		    v.draw(canvas);
		    
		    // Bitmap   png    
		    if(previewTempFile.exists())
		    	previewTempFile.delete();
		    try{
		    	previewTempFile.createNewFile();
		    } catch (IOException e){
		    	e.printStackTrace();
		    }
            FileOutputStream out = new FileOutputStream(previewTempFile);  
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);  
            Log.e("done", "done"); 
              
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
    }

QTスクリーンショットは以下のとおりです.
QPixmap QPixmap::grabWidget ( QWidget *widget, const QRect & rectangle ) [static]
コード:
 pixmap3 = QPixmap::grabWidget(Tab2,290,0,660,720);
 pixmap3.save(bmppath3.append("_c.bmp"),"bmp");