2010-10-12 35 views
1

Existe-t-il un moyen de le faire sans utiliser QItemDelegate? J'ai eu beaucoup de problèmes avec ça. Par exemple, si j'utilise un délégué:Appel QFileDialog lors de la tentative d'édition de cellule dans QTableView

  1. N'aura pas de boîte de dialogue native.
  2. Je vais devoir mettre en œuvre ma propre aperçu de l'image,
  3. Pour une raison quelconque, je ne peux pas redimensionner la fenêtre cause de setGeometry ne fonctionne pas, etc, etc.

    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; 
    }; 
    

Répondre

0

OK si la méthode editor-> setGeometry doit aller dans la méthode surchargée setEditorData de QItemDelegate.

Est-ce que quelqu'un sait d'un exemple de code où le setItemDelegate est utilisé pour peindre l'aperçu des vignettes des images dans le QFileDialog?

1

En pratique, tout ce qui modifie la géométrie de votre widget va à la fonction updateEditorGeometry. Remplacez-le pour éviter d'essayer l'original pour mettre votre boîte de dialogue dans la cellule de la table.