crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> File Drop и QtableWidget
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 20:26
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Как сбросить файл в таблицу, что бы запустился код считывания и обработки файла, а потом уже и вывод его в таблицу.
В примерах только QLabel
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 14.1.2011, 21:12
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


смотри методы QWidget:

setAссeptDrops(bool)
virtual void dropEvent(QDropEvent*)

Сообщение отредактировал Алексей1153 - 14.1.2011, 21:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 16.1.2011, 21:51
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Нашел только это.
Компилит но не работает =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.1.2011, 23:56
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Примерно так:
заголовочник класса окна
class SameClass : public QWidget {
    Q_OBJECT
public:
    SameClass(QWidget * = 0);
    virtual ~SameClass(){}

protected:
    virtual void dragEnterEvent(QDragEnterEvent *);
    virtual void dropEvent(QDropEvent *);
    
private:
    void load(const QString &);

private:
    QString currentFilePath;
    QTableView *view;
    
};

реализация класса окна
SameClass::SameClass(QWidget *parent):
                QWidget(parent)
{
    QVBoxLayout *layout = new QVBoxLayout(this);
    view = new QTableView(this);
    layout->addWidget(view);
    setLayout(layout);
    setAcceptDrops(true); // [1]
}

void SameClass::dragEnterEvent(QDragEnterEvent *event) {
    qDebug() << "SameClass::dragEnterEvent";
    event->acceptProposedAction(); // [1]
}

// [2]
void SameClass::dropEvent(QDropEvent *event) {
    qDebug() << "SameClass::dropEvent";
    const QMimeData *mime = event->mimeData();
    if (!mime->hasUrls()) {
        event->ignore();
        return;
    }

    if (!mime) return;
    QString file_path = mime->urls().first().toLocalFile();
    if (file_path.isEmpty()) return;
    
    load(file_path);
    currentFilePath = file_path;
    
    event->acceptProposedAction();
}

void SameClass::load(const QString &file_path)
{
    QMessageBox::information(this,
                             "Same class",
                             QString("Loading drop file:\n %1").arg(file_path));
}

[1] - разрешаем бросание на виджет
Цитата
To be able to receive media dropped on a widget, call setAcceptDrops(true) for the widget, and reimplement the dragEnterEvent() and dropEvent() event handler functions.
...
The dragEnterEvent() function is typically used to inform Qt about the types of data that the widget accepts. You must reimplement this function if you want to receive either QDragMoveEvent or QDropEvent in your reimplementations of dragMoveEvent() and dropEvent().

[2] - собственно обработка бросания
Цитата
The dropEvent() is used to unpack dropped data and handle it in way that is suitable for your application.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 17.1.2011, 14:43
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Спасибо, получилось.
Вот только как ограничить открываемые файлы только текстовыми ака text/plain


Вот пример моей программы (банально считает количество слов):
(если есть замечание по самому коду, готов высушать)

Сообщение отредактировал RazrFalcon - 17.1.2011, 14:46
Прикрепленные файлы
Прикрепленный файл  Word_Counter.zip ( 3.37 килобайт ) Кол-во скачиваний: 42
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.9.2020, 2:23