2011-09-16 15 views

cevap

20

Bunu denemedim, ancak bunun nasıl yapılacağı fikri budur. aşağıdaki gibi

Bunu çeşitli yollarla yapabilirsiniz Bir biçimidir:

QGraphicsView* view = new QGraphicsView(scene,this); 
QString fileName = "file_name.png"; 
QPixmap pixMap = QPixmap::grabWidget(view); 
pixMap.save(fileName); 
//Uses Qpixmap::grabWidget function to create a pixmap and paints the QGraphicsView inside it. 

diğer kılmak fonksiyon QGraphicsScene kullanmaktır ::) (işlemek:

QImage image(fn); 
QPainter painter(&image); 
painter.setRenderHint(QPainter::Antialiasing); 
scene.render(&painter); 
image.save("file_name.png") 
+1

harika! Teşekkürler. İkinci yaklaşımı denedim. Gerekli olan tek şey 'QImage'ın başlatılması gerektiğidir. – Donotalo

25

sadece uğraştıktan sonra Bu sorunla, yeni bir yanıt için yeterli gelişme var:

6

grabWidget kullanımdan kaldırıldı, kapsayıcı kullanın. Ve bir QFileDialog

QString fileName= QFileDialog::getSaveFileName(this, "Save image", QCoreApplication::applicationDirPath(), "BMP Files (*.bmp);;JPEG (*.JPEG);;PNG (*.png)"); 
    if (!fileName.isNull()) 
    { 
     QPixmap pixMap = this->ui->graphicsView->grab(); 
     pixMap.save(fileName); 
    } 
+1

Çözümünüzü ve * Petrucio * çözümünü test ettim. Her iki iş, çok teşekkür ederim. Ben senin çözümünü daha çok sevdim :), daha kısa. –

İlgili konular