2014-02-20 178 views
0

我试图生成与下面的代码如何在QList中的pixmaps上绘制<QPixmap>?

QList<QPixmap> pixmapList; 
for (int i=0;i<50;++i){ 
    QPixmap pixmap = QPixmap(10050,10050); 
    pixmap.fill(Qt::transparent); 
    pixmapList<<pixmap; 
} 

上述部分作品找到像素图。我想稍后在这些像素图上绘制,例如

QPixmap pixmap = pixmapList[10]; 
QPainter painter(&pixmap); 
painter.drawPixmap(....); // this pixmap is 10*10 
pixmapList[10]=pixmap; 

QPainter painter(&pixmapList[10]); 
painter.drawPixmap(....); // this pixmap is 10*10 

,但她们俩给我 “了QPainter ::开始:喷漆设备返回的发动机== 0,类型:2”。我可以用正确的方式在pixmapList中的pixmaps上绘制吗?非常感谢!

+1

http://developer.nokia.com/community/wiki/QPainter::begin:Paint_device_returned_engine_==_0_( Known_Issue) – OneOfOne

回答

0

你的代码是可以的,除了pixmaps太大(每个占用大约400MBytes)。

使像素映射较小后,它工作正常(示出为Qt的5):

#include <QGuiApplication> 
#include <QPixmap> 
#include <QPainter> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication a(argc, argv); 
    QList<QPixmap> pixmapList; 
    for (int i=0;i<50;++i){ 
     QPixmap pixmap = QPixmap(1000,1000); 
     pixmap.fill(Qt::transparent); 
     pixmapList<<pixmap; 
    } 
    QPainter painter(&pixmapList[10]); 
    painter.drawLine(0, 0, 100, 100); 
    return 0; 
} 
相关问题