2017-03-04 9 views
0

Qt WebEngineView(QML)をベースとしたWindowsアプリケーションがあります。私のアプリにはWebページがあります。私のアプリがファイルを選択し、最後のディレクトリユーザを覚えておくためウェブページを最後に開いたファイルディレクトリを覚えておくには?

私が知りたい
<input type="file" /> 

、それが可能である。いくつかのウェブページの必要性をユーザーが使用してファイルを選択するには?

私が試してみました:私のWebページで<input>

  • 設定値プロパティを、それはブラウザSet default value for a input file formを参照して、プログラム的にそれを設定することにより、許可されていません。
  • Chromeでウェブページを開くと、Chromeは最後のディレクトリを覚えています。しかし、私のアプリでは、毎回アプリがインストールされているディレクトリを開きます。
  • ネイティブファイルを開くダイアログでは、初期ディレクトリを設定できますが、ウェブページのファイルダイアログを開くために同じことをすることはできますか?

私はこれが不可能かもしれないことを知っています。任意の提案と回避策が評価されます。

答えて

2

WebEngineView要素には、Webコンテンツがファイルダイアログを要求したときのsignalがあります。

FileDialog要素には、フォルダを設定(および取得)するためのpropertyがあります。など

これらの線に沿って何かこれはちょうどラフスケッチです

FileDialog { 
    id: dialog 

    property var request 

    onRejected: request.dialogReject() 

    onAccepted: { 
     yourSavedFolder = folder; 

     request.dialogAccept(files); 
    } 
} 

WebEngineView { 
    onFileDialogRequested: { 
     request.accepted = true; // inhibit default dialog 

     dialog.request = request; 
     dialog.folder = yourSavedFolder; 
     dialog.open() 
    } 
} 

を動作するはずですので、あなたはまた、リクエストオブジェクトのオープンモードを処理する必要があります、

+0

非常に役に立ちました! **注意:** ** 1。** 'onFileDialogRequested'はQt 5.8が必要です。 ** request.dialogAccept(fileUrl.toString()); '(単一選択モードで)' request.dialogAccept(fileUrl.toString()); –

関連する問題