Seite 1 von 1

Fehlkermeldung beim Verwenden einer QMap

Verfasst: 30. September 2007 13:26
von slash-ex
Ich habe eine ziemlich merkwürdige Fehlermeldung, aber was ist daran verkehrt wenn ich ganz normal eine Map befüllen will?

Deklaration

Code: Alles auswählen

		QMap<QPixmap, QPointF> Area;
Teil der Implementation, beides produziert den Fehler...

Code: Alles auswählen

void TEST::dropEvent(QDropEvent *event)
{
	if (event->mimeData()->hasFormat("image/terrain-piece")) {	
		QByteArray pieceData = event->mimeData()->data("image/terrain-piece");
		QDataStream dataStream(&pieceData, QIODevice::ReadOnly);
		QPixmap pixmap;
		dataStream >> pixmap;

		//Area.insert(pixmap, QPointF(mouse_pos.x() - pixmap.width(), mouse_pos.y() - pixmap.height() ) );
		Area[pixmap] = *(new QPointF) ;

		event->setDropAction(Qt::MoveAction);
		event->accept();
	}
	else
		event->ignore();
}
Fehlermeldung

Code: Alles auswählen

../../../Qt/4.3.1/include/QtCore/../../src/corelib/tools/qmap.h:99: error: no match for 'operator<' in 'key1 < key2'
Ausschnitt aus der QMap.h

Code: Alles auswählen

template <class Key> inline bool qMapLessThanKey(const Key &key1, const Key &key2)
{
    return key1 < key2;
}

Verfasst: 30. September 2007 13:49
von upsala
Aus der Doku:
In addition, QMap's key type must provide operator<()
Erfüllt dein QPixmap diese Bedingung?

Verfasst: 30. September 2007 15:43
von slash-ex
Achso, aber warum ist das so? wird das gebraucht um die keys zu unterscheiden, also damit jeder eindeutig ist? Dann könnte ich ja einen eigenen Operator basteln.

Verfasst: 30. September 2007 18:19
von upsala
Hast du Doku zu QMap eigentlich schon mal durchgelesen?