2011-09-08 5 views
3

私はQTreeViewに接続したカスタムモデルでドロップを有効にしようとしています。Qtドロップを可能にするためにカスタムモデルを行う必要があるのは何ですか?

私は次のことをやった:

  • はacceptDropsがQStringListを返すために、私のカスタムモデルmimeType Sに実装return Qt::CopyAction | Qt::MoveAction
  • に私のカスタムモデルsupportedDropActionsに実装QTreeView
  • で有効になっていることを確実にuriテキスト/リストと
  • それが今まで発生した場合、ドロップを処理するために、私のカスタムモデルdropMimeDataに実装されます。

これは私がQTreeWidgetで作業するために必要なものです。

私が上で行ってきた

:私は私のアプリを実行して、私のQTreeViewにWindowsでファイルをドラッグしようとしたとき、私はちょうど取得、return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;それでも

にフラグを実装

  • ゴーストバスターズスタイルのサークルにスラッシュを付けたものは許されませんでした。

    他に何私はドロップを可能にするために何が必要ですか?

答えて

2

は最後に自分でこれを考え出しました。

は問題がフラグ機能で、無効な索引の場合、私はItemIsDropEnabledフラグを返すために失敗したということでしたが判明します。無効なインデックスは、ルートノードの信号、すなわちアイテムが存在しないビューの領域であるため、空きスペースはドロップ可能ではありません。

これは私が私のツリーに項目を追加するには、ドロップを使用しようとしていた、などどれもドロップ作業なしではなかった、私が見たすべてがスラッシュと円だっ意味するので検出することは困難でした。同様の問題に直面して人のために

0

、私はそれをサポートするドロップアクションの中Qt::CopyActionを戻す必要があることを指摘したいと思います。 Qt::MoveActionだけでは機能しません。

関連する問題