1

これを解決するために私を助けてください....私はQListView左側にとQWidget反対側にあります。でQListView私はを使用していくつかのアイテムを追加しましQStandardItemた。QListView今、私はアイテムを反対側にドラッグアンドドロップしたいと思いますQWidget、そして私はまた同じことをしなければなりませんQWidgetQListViewを使用して、アイテムをそれ自体の中にQListViewドラッグアンドドロップできます

listView.setAcceptDrops(true);
listView.setDragEnabled(true);
listView.setDragDropMode(QAbstractItemView::InternalMove); 

これは、QListView内だけで正常に機能しています。QListViewアイテムを他のウィジェットにドラッグアンドドロップしたい。これどうやってするの?私は次のようなイベントを処理する必要があることを知っています

void dropEvent(QDropEvent *);
void dragMoveEvent(QDragMoveEvent *);
void dragEnterEvent(QDragEnterEvent *);
void mousePressEvent(QMouseEvent *);

こんな感じでやってみました

void Example::dragMoveEvent(QDragMoveEvent *e)
{
    // The event needs to be accepted here
    e->accept();
}

void Example::dragEnterEvent(QDragEnterEvent *e)
{
    // Set the drop action to be the proposed action.
    e->acceptProposedAction();
}

void Example::dropEvent(QDropEvent *e)
{
    qDebug("Items Dropped");
}

qDebug()を試してみたところ、アイテムを自分からドラッグしてQListViewドロップすると、QWidget「アイテムがドロップ されました」という出力が表示されます。しかし、私は私の正確なQListViewアイテムをここに持ってくる方法を知りません。

4

1 に答える 1

5

ビューをサブクラス化する必要はありません。ドラッグアンドドロップはすべてモデルによって処理されるため、標準モデルをサブクラス化する必要があります。モデルのサブクラス化リファレンスを確認することをお勧めします。もちろん、QAbstractItemView::DragDrop外部のドラッグアンドドロップを取得するには、ビューのドラッグアンドドロップモードを変更する必要もあります。

于 2012-10-20T12:48:44.070 に答える