Плъзнете и пуснете от QListWidget в QLineEdit

Имам QListWidget с редове от прост текст. Искам да го настроя, така че потребителят да може да плъзга и пуска тези данни в някои QLineEdit обекти.

Включих плъзгане и пускане и за двата типа, но това не ми позволява да плъзгам и пускам от QListWidget към QLineEdit. Това обаче ми позволява да плъзгам от един QLineEdit към друг QLineEdit.

Досега не съм прилагал повторно никакви методи. Всичко, което направих, беше да включа функциите за плъзгане и пускане в изгледа за редактиране.

Как да активирам плъзгане и пускане от QListWidget към QLineEdit? Кои методи трябва да внедря отново?

Благодаря,


person RushK    schedule 18.07.2013    source източник


Отговори (2)


Разбрах го.

FYI:

Трябва да подкласирате 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());
    }
}
person RushK    schedule 18.07.2013

Тъй като се опитвате да DND от различни типове, плъзгате различни mime данни. Поради това QLineEdit не знае как да се справи с изпуснатите данни. Подкласирайте вашата джаджа и имплементирайте dropEvent() и в крайна сметка ще ви трябва и dragEnterEvent() dragLeaveEvent() и dragMoveEvent().

person Sebastian Lange    schedule 18.07.2013
comment
Имам ли нужда от тях за QLineEdit или QListWidget или и за двете? - person RushK; 18.07.2013
comment
сори, беше зает на работа. Както написахте QLineEdit се нуждае от dropEvent/EnterDragEvent - person Sebastian Lange; 18.07.2013