尝试在 QTableView 中编辑单元格时调用 QFileDialog

Posted

技术标签:

【中文标题】尝试在 QTableView 中编辑单元格时调用 QFileDialog【英文标题】:Call QFileDialog when trying to edit cell in QTableView 【发布时间】:2010-10-12 19:11:23 【问题描述】:

有没有办法在不使用 QItemDelegate 的情况下做到这一点?我一直有很多麻烦。例如,如果我使用委托:

    没有原生对话框。 我必须实现自己的图像预览,

    由于某些原因,我无法调整窗口大小,因为 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;
    ;
    

【问题讨论】:

【参考方案1】:

在实践中,改变小部件几何形状的所有内容都会转到 updateEditorGeometry 函数。覆盖它以避免尝试将原始对话框放在表格的单元格中。

【讨论】:

【参考方案2】:

好的,所以 editor->setGeometry 方法必须进入 QItemDelegate 的重写方法 setEditorData。

有人知道使用 setItemDelegate 绘制 QFileDialog 中图像的缩略图预览的示例代码吗?

【讨论】:

以上是关于尝试在 QTableView 中编辑单元格时调用 QFileDialog的主要内容,如果未能解决你的问题,请参考以下文章

在 QTableView 中编辑单元格后使用 TAB 键前进时如何避免编辑模式?

编辑单元格时如何在 QTableView 中使用 Enter 键导航

QTableView 并双击一个单元格

在 QTableView 中编辑单元格时出现 QtVirtualKeyboard 焦点问题

选择单元格时,更改 QTableView 中图标的颜色突出显示

编辑 QTableView 单元格时设置初始文本