QGraphicsItem text & bild QDrag

Alles rund um die Programmierung mit Qt
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

QGraphicsItem text & bild QDrag

Beitrag 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
.........................
speack português italiano deutsch english castellà qt
Antworten