如何在QList <qpixmap>?</qpixmap>中的pixmaps上绘制

时间:2014-02-20 22:03:45

标签: c++ qt

我正在尝试使用以下代码生成pixmaps

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 :: begin:Paint device return engine == 0,type:2”。我可以问一下在pixmapList上绘制pixmaps的正确方法吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

您的代码没问题,只是像素图太大(每个占用约400MB)。

使pixmaps变小后,它工作正常(显示为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;
}