QTのQFILESSYSTEMMODELからマッピングされたネットワークドライブを除外するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4477997

質問

ツリービューでカスタムサブクラスqfilesystemmodelを使用して、ユーザーがチェックボックスを使用してフォルダーを選択できるようにしています。私の問題は、マッピングされたネットワークドライブがハードドライブとしてリストされていることですが、私はそれらを操作することができないため、ローカルドライブのみを表示したいです。 qfilesystemmodelにローカルドライブのみを表示するように強制するにはどうすればよいですか?

役に立ちましたか?

解決

情報源やドキュメントから私が理解できたことから、QfilesystemModelで直接行うことは不可能です。

私が考えることができる唯一の可能な回避策は、Redefined FilterCeptsSrow()またはFilterCeptsScolumn()を備えたQSORTFILTERPROXYMODELサブクラスを使用することです。何の行。再定義されたメソッドは、qfilesystemmodel :: filepathroleを使用してdata()を使用するか、qobject_cast <>を使用してqfilesystemmodel :: filepath()を呼び出すことにより、ファイルのパスを把握します。それから、QTがドライブのルートパスを把握し、qtがドライブがネットワークであるかどうかを把握する方法を提供しないように、getDriveType()winapi関数を呼び出すことになります。もちろん、このようなものは下に置かなければなりません #ifdef Q_OS_WIN32.

これは複雑に見えますが、私は他の方法を考えることはできません。また、getDriveType()がどれくらい速いかはわかりませんが、パフォーマンスの問題がある場合は、何らかのキャッシングを実装することが常に可能です。

他のヒント

qfilesystemmodelフィルターをqdir ::ドライブのみに使用するのはどうですか。私の知る限り、これはローカルハードドライブのみをリストしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top