QGraphicsItem text & bild QDrag
Verfasst: 14. Mai 2008 11:18
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?
der drag start is so..
ist alles teil von http://www.qt-apps.org/content/show.php ... tent=80234
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