Seite 1 von 1

QGraphicsItem text & bild QDrag

Verfasst: 14. Mai 2008 11:18
von patrik08
Ich mache ein Drag Drop in einen QTextDocument QGraphicsItem
und dabei zeige ich das bild oder text an was verschoben wird auf window
geht es 1a auf ubuntu linux gibt es ein core dumped und finden sein eigenes font * ttf nicht mehr ......

was ist iher falsch?


Code: Alles auswählen

QPixmap TextWriter::PicfromMime( QMimeData *mime )
{
	QPixmap one;
	QStringList dli = mime->formats();
	if (dli.contains("application/x-picslists")) {
		        QByteArray dd = mime->data("application/x-picslists"); 
            QList<SPics> li = OpenImageGroup(QString(dd.data()));
		        if (li.size() > 0) {
            SPics primoi = li.first();
            return primoi.pix();
						}
		
	}
	
	if (dli.contains("text/html")) {
		QByteArray dd = mime->data("text/html"); 
		QTextDocument *picdoc = new QTextDocument();
		picdoc->setHtml ( QString(dd.data()) );
		
		           QMapIterator<QString,SPics> i(imglist());
                 while (i.hasNext()) {
                     i.next();
									    SPics e  = i.value();
						         picdoc->addResource(QTextDocument::ImageResource,QUrl(e.name),e.pix());
								 }
		
		
		    QTextFrame  *Tframe = picdoc->rootFrame();
				QTextFrameFormat rootformats = Tframe->frameFormat();
				rootformats.setBottomMargin (0); 
				rootformats.setTopMargin(0); 
				rootformats.setRightMargin (0); 
				rootformats.setLeftMargin (0); 
				rootformats.setPadding (0); 
				Tframe->setFrameFormat ( rootformats );
		    picdoc->adjustSize();
		    /* paint doc */
		    QAbstractTextDocumentLayout *Layout = picdoc->documentLayout();
	      QRectF docirec = Layout->frameBoundingRect(picdoc->rootFrame()); 
		    QPixmap PicsDocument(docirec.size().toSize());
				PicsDocument.fill(Qt::white);
		    QRectF clip(0, 0,PicsDocument.width(),PicsDocument.height());
				QPainter *p = new QPainter(&PicsDocument);
        p->setRenderHint(QPainter::Antialiasing, true);
        picdoc->drawContents(p,clip);
				p->end();
				return PicsDocument;
	}
	
	return one;
}



der drag start is so..

Code: Alles auswählen


if (  C_cursor.hasSelection() && 
                   modifiers == Qt::ShiftModifier && 
                   edit_enable) {
							   DragFill = true;
		             cursortime = false;
		             setBlinkingCursorEnabled(false);
								 repaintCursor();
		             QMimeData *DDmime = createMimeDataFromSelection();
								 QPixmap ddpic = PicfromMime(DDmime);
		             QDrag *drag = new QDrag(Fevent);
                 drag->setMimeData(DDmime); 
		             if (!ddpic.isNull()) {
                 drag->setPixmap(ddpic); 
                 	delete &ddpic;								 
                 }
								 if (drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction) == Qt::MoveAction) {
								 return;
                 }
		
	}


ist alles teil von http://www.qt-apps.org/content/show.php ... tent=80234