crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
silver47
  опции профиля:
сообщение 21.2.2012, 12:20
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Добрый день. Задача такая: при отпускании кнопки мыши, перехватить тот текст, который кидается на QTableWidget, и в зависимости от его содержания, выполнить определенную часть кода. Добавлять этот текст на QTableWidget не нужно, нужно лишь распарсить его. Собственно до чего дошел:

Установил фильтр на QTableWidget::viewPort() и перехватываю события
bool Widget::eventFilter(QObject *object, QEvent *event){
    if(object == table->viewport()){
        if(event->type() == QEvent::Drop){
            QDropEvent* de = static_cast <QDropEvent*>(event);
            qDebug() << de->mimeData()->hasText();
            qDebug() << de->mimeData()->text();
            return false;
        }
    }
    return false;
}

Событие DropEvent есть, но текста в нем нет - это первое, текст, который перетащили - появляется в таблице, это второе.

UPD текст перетаскиваю из QTreeWidget.

Подскажите, пожалуйста, где ошибся. Спасибо.

Сообщение отредактировал silver47 - 21.2.2012, 12:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 22.2.2012, 1:20
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Насчет первого попробуйте вытащить через другие MIME типы, функция text() возвращает только "text/plain".
Насчет второго можно так
de->setDropAction(Qt::IgnoreAction);

или подредактировать свойство самого QTableWidget
setDefaultDropAction (Qt::IgnoreAction);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 22.2.2012, 4:05
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(ilyabvt @ 22.2.2012, 4:20) *
Насчет первого попробуйте вытащить через другие MIME типы, функция text() возвращает только "text/plain".
Насчет второго можно так
de->setDropAction(Qt::IgnoreAction);

или подредактировать свойство самого QTableWidget
setDefaultDropAction (Qt::IgnoreAction);


Да, уже разобрался. QTreeWidget возвращает QStandartItemModelDatalist. Как из него вытащить текст не нашел, пошел более заковыристым путем - переопределил DropEvent у QTableWidget и dragEnterEvent у QTreeView, попутно добавил dragMoveEvent для QTableWidget, чтобы я мог перетаскивать на него элементы только с QTreeView, а с него только на нужный мне объект.

Сообщение отредактировал silver47 - 22.2.2012, 13:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.7.2025, 19:23