Russian Qt Forum

Qt => Общие вопросы => Тема начата: megido от Декабрь 30, 2016, 14:08



Название: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: megido от Декабрь 30, 2016, 14:08
Код:
void DragListWidget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        foreach (QUrl url, event->mimeData()->urls()) {
            qDebug() << url;
        }
    }  // пусто

    QString name = event->mimeData()->text();
    qDebug() << name; // выводит ""
    QListWidget::dropEvent(event);

    

}

используется мультивыбор элементов


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Day от Декабрь 30, 2016, 14:41
Просто.
objectName();
Или я не понял вопроса. Какого именно объекта? Класс должен быть наследником QObject. Иначе у него никаких objectName нет


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: megido от Декабрь 30, 2016, 15:02
Просто.
objectName();
Или я не понял вопроса. Какого именно объекта? Класс должен быть наследником QObject. Иначе у него никаких objectName нет

    QObject *sourceObject=qobject_cast<QObject *>( event->source() );

    qDebug() << sourceObject->objectName(); это выводит название объекта ИЗ какого перетащили элемент.
    а мне нужно название объекта в какой перетащили.


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Day от Декабрь 30, 2016, 15:14
    а мне нужно название объекта в какой перетащили.
Дык, а вы что не знаете объекта, в который перетаскиваете? не в сам ли объкт класса DragListWidget ? Тогда
Код:
this->objectName();
  или просто
objectName();


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: megido от Декабрь 30, 2016, 15:17
    а мне нужно название объекта в какой перетащили.
Дык, а вы что не знаете объекта, в который перетаскиваете? не в сам ли объкт класса DragListWidget ? Тогда
Код:
this->objectName();
  или просто
objectName();
вот блин. а я тут горожу велосипед :D
а как получить текст дропнутых элементов?


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Day от Декабрь 30, 2016, 15:29
Я думаю, столь же просто. Стандартными методами. Ну, конечно, с анализом того, что вы дропаете и есть ли там текст. Деталей подсказать не могу, так как сам этим не занимался.
Но соображения такие. Объект (дропнутый) ведь вам доступен? Кастируйте его к нужному типу. И извлекайте то, что вам надо. Имхо, все в пределах документации без хитростей.


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: megido от Декабрь 30, 2016, 15:34
Я думаю, столь же просто. Стандартными методами. Ну, конечно, с анализом того, что вы дропаете и есть ли там текст. Деталей подсказать не могу, так как сам этим не занимался.
Но соображения такие. Объект (дропнутый) ведь вам доступен? Кастируйте его к нужному типу. И извлекайте то, что вам надо. Имхо, все в пределах документации без хитростей.
я могу кастануть его. но мне не нужно вытащить все элементы виджета. мне нужно только те что были перенесены.


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Bepec от Декабрь 30, 2016, 15:51
Все данные о том, ЧТО переносится, КАК переносится, КУДА переносится находятся в евенте... Просто пройдитесь по методам и всё у вас получится.


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: megido от Декабрь 30, 2016, 16:11
разобрался

это кошмар
Код:
    QByteArray text = event->mimeData()->data("application/x-qabstractitemmodeldatalist");
    QDataStream stream(&text, QIODevice::ReadOnly);
    while (!stream.atEnd())
    {
        int row, col;
        QMap<int,  QVariant> roleDataMap;
        stream >> row >> col >> roleDataMap;
        emit UpdateSignal(roleDataMap.first().toString(),bool(active),group_id);
    }


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: kambala от Декабрь 30, 2016, 16:41
чтобы не было кошмара, можно отказаться от widget и использовать view+model, а в модели написать свое заполнение данных драга


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Day от Декабрь 30, 2016, 23:57
Цитировать
это кошмар
Видимо, кошмарно спроектирован весь проект. Плюс кошмарное понимание (кошмарное непонимание) совершенно элементарных вещей.
Я вам могу посоветовать на некоторое время перестать "творить", а просто почитать документацию.


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: Igors от Декабрь 31, 2016, 06:43
чтобы не было кошмара, можно отказаться от widget и использовать view+model, а в модели написать свое заполнение данных драга
Конечно это (намного) проще, но теряется возможность переноса данных между разными приложениями. Насколько она нужна - другой вопрос, но идеология DnD это предполагает


Название: Re: подскажите пожалуйста как достать object name и текст объектов в dropEvent?
Отправлено: kambala от Декабрь 31, 2016, 18:01
чтобы не было кошмара, можно отказаться от widget и использовать view+model, а в модели написать свое заполнение данных драга
Конечно это (намного) проще, но теряется возможность переноса данных между разными приложениями. Насколько она нужна - другой вопрос, но идеология DnD это предполагает
не совсем понимаю в чем проблема. речь о других Qt приложениях, использующих *widget?

если корректно заполнить mimeData, другие приложения смогут спокойно читать данные.