2

シンプルなテキストの行を持つ QListWidget があります。ユーザーがこのデータを QLineEdit オブジェクトにドラッグ アンド ドロップできるように設定したいと思います。

両方のタイプでドラッグ アンド ドロップをオンにしましたが、QListWidget から QLineEdit にドラッグ アンド ドロップすることはできません。ただし、ある QLineEdit から別の QLineEdit にドラッグすることはできます。

これまでのところ、メソッドを再実装していません。私がしたことは、編集ビューでドラッグ アンド ドロップ機能を有効にすることだけでした。

QListWidget から QLineEdit へのドラッグ アンド ドロップを有効にするにはどうすればよいですか? どのメソッドを再実装する必要がありますか?

ありがとう、

4

3 に答える 3

3

私はそれを考え出した。

ご参考までに:

QLineEdit をサブクラス化し、dragEnterEvent と dropEvent を再実装する必要があります。

void MyLineEdit::dragEnterEvent(QDragEnterEvent *e){
    if(e->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")){
        e->acceptProposedAction();
    }
}

void MyLineEdit::dropEvent(QDropEvent *e){
    QByteArray encoded = e->mimeData()->data("application/x-qabstractitemmodeldatalist");
    QDataStream strm(&encoded, QIODevice::ReadOnly);
    while(!strm.atEnd()){
        int row, col;
        QMap<int,  QVariant> data;
        strm >> row >> col >> data;
        this->setText(data[0].toString());
    }
}
于 2013-07-18T06:27:54.767 に答える
2

さまざまなタイプから dnd しようとしているので、さまざまな MIME データをドラッグします。そのため、QLineEdit はドロップされたデータを処理する方法を知りません。ウィジェットをサブクラス化し、dropEvent() を実装します。最終的には、dragEnterEvent()、dragLeaveEvent()、dragMoveEvent() も必要になります。

于 2013-07-18T05:30:58.333 に答える