Производный от QListWidget: событие сброса не запускается - PullRequest
0 голосов
/ 22 декабря 2018

Виджет, полученный из QListWidget, является единственным виджетом в окне.Функция "setAcceptDrops (true);"используется в его конструкторе, а "event-> accept ();"вызывается в его "dragEnterEvent".Однако его «dropEvent» не может быть запущен.Пожалуйста, проверьте весь исходный код (созданный с использованием Qt 5.12.0) по адресу github.com/jianz-github/dropevent.

Я задал вопрос на Событие Qt Drop не вызывает .Эта ситуация должна быть такой же, но это не так.Странно.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 22 декабря 2018

В этом случае решение также заключается в перезаписи метода dragMoveEvent().

listbox.h

#ifndef LISTBOX_H
#define LISTBOX_H

#include <QListWidget>
#include <QDropEvent>
#include <QDragEnterEvent>

class ListBox : public QListWidget
{
public:
    ListBox(QWidget *parent = nullptr);
protected:
    void dropEvent(QDropEvent *event) override;
    void dragEnterEvent(QDragEnterEvent *event) override;
    void dragMoveEvent(QDragMoveEvent *event) override;
};

#endif // LISTBOX_H

listbox.cpp

#include "listbox.h"
#include <QDebug>

ListBox::ListBox(QWidget *parent) : QListWidget (parent)
{
    setAcceptDrops(true);
}
void ListBox::dropEvent(QDropEvent *event)
{
    qDebug() << "dropEvent"<<event;
}
void ListBox::dragEnterEvent(QDragEnterEvent *event)
{
    event->acceptProposedAction();
}
void ListBox::dragMoveEvent(QDragMoveEvent *event)
{
    event->acceptProposedAction();
}
...