1

QItemDelegate を使用せずにこれを行う方法はありますか? 私はそれで多くの問題を抱えてきました。たとえば、デリゲートを使用する場合:

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

2 に答える 2

1

実際には、ウィジェットのジオメトリを変更するものはすべて updateEditorGeometry 関数に送られます。元のダイアログをテーブルのセル内に配置しようとするのを避けるために、それをオーバーライドします。

于 2011-10-24T20:40:32.130 に答える
0

それでは、editor->setGeometry メソッドを QItemDelegate のオーバーライドされたメソッド setEditorData に入れる必要があります。

setItemDelegate を使用して QFileDialog の画像のサムネイル プレビューを描画するサンプル コードを知っている人はいますか?

于 2010-10-12T19:51:28.987 に答える