2016-08-06 4 views
1

私がしようとしているのは、FTPクライアントがFTPサーバーのすべてのファイルを一覧表示するのと同じようにオンラインファイルのリストビューを表示することです。任意の行を任意のローカルフォルダにドラッグして、ドラッグしたファイルをそこに保存することができます。 retrieveDataをドラッグイベントのinitQt Windowsエクスプローラへのドラッグアンドドロップ:ドロップ先のパスを知るにはどうすればいいですか

  1. 、および[完了]
  2. サブクラスQMimeDataクラスサーバー上で選択されたファイルのパスを保存し、上書き:私はfollwingの手順を介してこれを実装する予定です

    機能このスレッドが示唆同じようhere [完了]ドラッグ&ドロップのプロセスを終了し、をドロップ先のパスを見つける

  3. 、Cは言う:\ somefolder \サブフォルダ、そしてそこにすべてのファイルをダウンロードし、作業完了です。 [未完了]

しかし、ドロップイベントデスティネーションパスを取得するための場所が見つかりませんでした。ドラッグイベント\ dragMove \ dragLeave \ dropイベントを処理しても見つかりませんでした。私はまた、Google検索のトンをやったことがいくつかの同様の質問を見つけたが、決して固い答え。

これについていくつか明記してください。この解決法はQTでも可能ですか?どのように目的地のパスを取得するか、この目的を達成する他の方法はありますか?

+0

Windowsは、ドロップのターゲットを検出する方法を提供していません。 [非同期データ転送](https://msdn.microsoft.com/en-us/library/windows/desktop/bb776904.aspx#async)を実行する方法を提供します。私はあなたがQtだけでそれを取り除くことはできないと確信しています。Windows APIを直接使用する必要があります。 –

+0

@IgorTandetnikは返信をありがとう、私はIAsyncOperationが私が望むものを達成することができるかもしれないと信じていますが、私は別の方法を選択します。私はちょうどドラッグイベントを与えるので、ドラッグが存在しないように見えるように、URLリストとして存在しないいくつかのファイルを与えます。落としたとき、もちろん、何もファイルのURLリストが偽であるということは起こりません。私はちょうどドロップ位置でウィンドウHWNDを見つけ、そのパスを見つけることを試みる[http://forums.codeguru.com/showthread.php?440285-Get-directory-path-from-explorer-window]、ちょうどダウンロードそこに私のファイル。これはもちろん馬鹿ですが、私にとっては実装が簡単です。 – Sean

+0

フォルダアイコンをドロップするとどうなりますか?(ファイルが移動するフォルダは、エクスプローラウィンドウと同じフォルダではありません)または、プリンタのアイコンをクリックします(この場合、エクスプローラは一時ディレクトリに最初にドロップしたいと思います)。 –

答えて

1

これを探している人にとって、私は答えを見つけるかもしれませんが、それは容易ではなく、プラットフォームに依存する可能性があります。

(文字通り)検索のトン後、私はFileZilla'sソースコードに解決策を見つけ、そのようsituatuationに対処するために判明し、あなたが必要とする:

  1. 監視するシェル拡張を必要とする(または何でも)ドラッグ処理
  2. は、通常のドラッグを開始し、マウスがドロップされたとき、ちょうど何もしない、全体のドラッグを聞かせて処理をドロップ
  3. をドロップ
  4. シェル拡張を介して
  5. を終了し、あなたは実際の宛先パスを取得し、単にダウンロードすることができますそこにあなたのファイル。技術的な詳細について

、plzは私は誰もが他のプラットフォームのための答えを取得する場合、私に知らせてください、これが唯一のウィンドウのためだと思うFileZilla official website

を訪問!

関連する問題