Вызывать QFileDialog при попытке редактировать ячейку в QTableView - PullRequest
1 голос
/ 12 октября 2010

Есть ли способ сделать это без использования QItemDelegate?У меня было много проблем с этим.Например, если я использую Delegate:

  1. У меня не будет собственного диалогового окна.
  2. Мне придется реализовать свой собственный предварительный просмотр изображения,
  3. Почему-то я не могу изменить размер окна, потому что setGeometry не работает и т. Д. И т. Д.

    QWidget *createEditor(
        QWidget *parent,
        const QStyleOptionViewItem &option,
        const QModelIndex &index
    ) const {
    Q_UNUSED(option);
    Q_UNUSED(index);
    
    QFileDialog* editor = new QFileDialog(parent);
    editor->setFilter("*.png");
    editor->setDirectory(mResources);
    editor->setGeometry(0,0,1000,500);
    editor->exec() // <--- big file dialog;
    
    return editor; // <--- tiny file dialog;
    };
    

Ответы [ 2 ]

1 голос
/ 25 октября 2011

На практике все, что меняет геометрию вашего виджета, идет в функцию updateEditorGeometry.Переопределите его, чтобы не пытаться использовать исходный текст для помещения диалога в ячейку таблицы.

0 голосов
/ 12 октября 2010

ОК, поэтому метод editor-> setGeometry должен перейти в переопределенный метод setEditorData объекта QItemDelegate.

Кто-нибудь знает пример кода, где setItemDelegate используется для рисования миниатюр предварительного просмотра изображений в QFileDialog?

...