我正在嘗試升級我的地震圖形查看器以使用瓦片圖形渲染。我對這個過程很不熟悉,但是我試圖創建一個簡單的例子如下。爲什麼我需要使用QVector或QCache(爲了簡單起見,我現在使用QVector)是爲了節省內存和需要在運行中創建的磁貼。我不完全確定你是否能夠做到我下面要做的事情,但本質上它創建了一系列位圖,使它們成爲項目,然後嘗試將它們添加到場景中。這個程序編譯時有十二個錯誤,其中沒有一個直接引用我在mainWindow.cpp中創建的代碼。使用QVector創建圖形瓦片(QCache之前的基礎知識)
誤差是可以在本
C:\Qt\Qt5.9.1\5.9.1\mingw53_32\include\QtCore\qvector.h:713: error: use of deleted function 'QGraphicsPixmapItem& QGraphicsPixmapItem::operator=(const QGraphicsPixmapItem&)' with the only thing changing being the location of the error (different header files)
或該
C:\Qt\Qt5.9.1\5.9.1\mingw53_32\include\QtWidgets\qgraphicsitem.h:861: error: 'QGraphicsPixmapItem::QGraphicsPixmapItem(const QGraphicsPixmapItem&)' is private Q_DISABLE_COPY(QGraphicsPixmapItem) which is in the qgraphicsitem.h header file
產生不編譯由於這些誤差在頭文件彈出代碼
int count;
QVector<QBitmap> BitmapArrayTiles;
QVector<QGraphicsPixmapItem> PixmapItemsArray;
QGraphicsPixmapItem currentItem;
QBitmap currentBitmap;
QGraphicsScene *scene = new QGraphicsScene();
for(count = 0; count < 4; count++)
{
currentBitmap = QBitmap(150,150);
QPainter Painter(¤tBitmap);
QPen Pen(Qt::black); // just to be explicit
Painter.setPen(Pen);
drawStuff(Painter);
BitmapArrayTiles.insert(0, currentBitmap);
currentItem.setPixmap(BitmapArrayTiles[count]);
PixmapItemsArray.insert(count, currentItem);
scene->addItem(¤tItem);
currentItem.mapToScene((count*150)+150, (count*150)+150);
}
ui->TileView->setScene(scene);
^
我沒有手動更改頭文件,所以我不完全確定爲什麼我會得到這些錯誤。
QObject的是不可拷貝。 Qt4的方式是使用指針而不是對象。 – drescherjm
https://stackoverflow.com/questions/19854371/repeating-q-disable-copy-in-qobject-derived-classes – drescherjm
https://stackoverflow.com/questions/2652504/how-do-i-copy-object -in-qt – drescherjm