1

からドラッグ オブジェクトを作成しますQListWidgetItem。このドラッグ オブジェクトでテキストを MIME データとして送信できます。

ピックスマップを送信して MIME データから取得するにはどうすればよいですか? QGraphicsItemを作成して取得することさえ可能でしょうか?

から にドラッグ アンド ドロップしようとしQListWidgetましたQGraphicsView

4

1 に答える 1

5

QPixmapthroughを送信するには複数の方法がありますQMimeData

  1. それを PNG などのファイル形式にエンコードし、それを MIME タイプで送信しますimage/png(QMimeDataには、そのサポートが組み込まれています。 を参照してQMimeData::imageData()ください)。
  2. を使用してQPixmapをにシリアライズし、シリアライズをアプリ固有の mime-type で送信します。QByteArrayQDataStreamapplication/x-app-name
  3. 画像データをディスク上のファイルに書き込み、そのファイルの URL を MIME タイプで送信しますtext/uri-list(QMimeDataにはこれに対するサポートが組み込まれています。 を参照してQMimeData::urls()ください)。これにより、これらの画像をファイル マネージャーまたはデスクトップにドラッグできます。
  4. 上記の (2) と同様に、 を作成しQGraphicsItem、そのアドレスを に詰め込み、QByteArrayそれをアプリ固有の MIME タイプで送信することもできます。もちろん、ドラッグが別のプロセスで終了する場合、これは機能しません (その場合QDragEvent::source()は返されるため、受信サイトはテストできます0)。また、グラフィック アイテムの有効期間を処理するには特別な注意が必要です。

一度QMimeDataに複数の形式を渡すことができるため、これらのオプションは排他的ではありません。ただし、再実装から返される形式は、QMimeData::formats()具体性の低い順に並べ替える必要があります。つまり、app-private 形式が最初にtext/uri-list来て、最後に来ます。

于 2012-06-20T21:43:39.707 に答える