ドラッグ アンド ドロップ機能を QListWidget に追加しようとしています。最初のマイルストーンは、次のコードで達成されました。
//draglist.h
#include <QListWidget>
class SourceList : public QListWidget
{
public:
SourceList(QWidget * parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);
};
//draglist.cpp
#include "draglists.h"
#include <QMouseEvent>
#include <QDebug>
#include <QMimeData>
#include <QDrag>
SourceList::SourceList(QWidget * parent)
:QListWidget(parent)
{
}
void SourceList::mousePressEvent(QMouseEvent *event)
{
//Data from the selected QListWidgetItem
QString itemData = currentItem()->data(Qt::DisplayRole).toString();
QMimeData *mimeData = new QMimeData;
mimeData->setText(itemData);
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
drag->exec();
}
リスト項目のドラッグ機能が有効になりましたが、クリックできなくなりました。1 回の左クリックでリスト内の項目を選択する機能を保持するにはどうすればよいですか (これはmousePressEvent()
オーバーライドされていない場合の動作です)。
考えられる解決策
元のQAbstractItemView::mousePressEvent(QMouseEvent *event)のソース コードを確認し、必要なコードをSourceList::mousePressEvent(QMouseEvent *event)
実装に再コピーします。存在する場合、私はそれに代わるものを探しています。