ドラッグアンドドロップで並べ替えることのできるカスタムアイテムでQListWidgetを実装する際に問題があります。問題は、アイテム上で高速ダブルクリック(非常に短いドラッグ&ドロップ)を行うと、アイテムがQListWidgetから消えることがあることです。QListWidget Symbian上のリストからアイテムがドラッグアンドドロップされる
これは私のウィジェットのコンストラクタです。また
ListPopisiDragDrop::ListPopisiDragDrop(QWidget *parent) :
QListWidget(parent)
{
setSelectionMode(QAbstractItemView::SingleSelection);
setDragEnabled(true);
viewport()->setAcceptDrops(true);
setDefaultDropAction(Qt::MoveAction);
setDropIndicatorShown(true);
setDragDropMode(QAbstractItemView::InternalMove);
}
ドロップイベント:
void ListPopisiDragDrop::dropEvent(QDropEvent *event){
int startRow=currentIndex().row();
QListWidget::dropEvent(event);
int endRow=currentIndex().row();
//more code...
}
カスタム項目がQAbstractItemDelegateから(ペイントを実装することにより製)とのsizehint()関数です。
消えるアイテムの問題が発生すると、dropEventは呼び出されません。
私は本当に何が起こっているのか、私が何か間違っているのか分かりません。どんな助けもありがとうございます。
ありがとうございます!
編集: 私はSymbian S60 5th Editionの携帯電話でアプリケーションを実行しています。私は、コンストラクタに次の行を追加した場合 :
EDIT2は
setDragDropOverwriteMode(true);
項目をリストにまだ消えますが、空の行は、それの場所にとどまります。
EDIT3: 私は何が起こっているかを確認するには、このコードを追加しました:
bool ListPopisiDragDrop::event(QEvent *e){
qDebug()<<"new event, type: "<<e->type()<<", listCount: "<<this->count();
QListWidget::event(e);
}
私はまた、ドロップイベントが呼び出されたときに「イベントをドロップ」印刷しました。あなたがイベントタイプ68、2から1へlistCountの変更(1つのアイテムが消える)した後、見ることができるように
...
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 68 , listCount: 2
[Qt Message] DROPEVENT
[Qt Message] new event, type: 71 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 68 , listCount: 2
[Qt Message] DROPEVENT
[Qt Message] new event, type: 71 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 2
[Qt Message] new event, type: 68 , listCount: 2
[Qt Message] new event, type: 12 , listCount: 1
[Qt Message] new event, type: 12 , listCount: 1
[Qt Message] new event, type: 1 , listCount: 1
...
:これは私に次のような出力を提供します。私はまだどこに問題があるのかは分かりません...
Edit4: 私はカスタムアイテムを使用していなくても同じ動作をしています。まだ何が間違っているか把握することはできません。
Edit5: [1]の例でも、モバイルデバイスでテストしたときの動作は同じです。 Qtバージョンが問題になることはありますか?私は... Symbianデバイスバージョン4.6.3用のQtを使用してい
[1] http://www.java2s.com/Code/Cpp/Qt/QListWidgetdraganddrop.htm
68 = ChildAdded、71 = ChildRemoved、12 =ペイント、1 =タイマー – hmuelner