2017-03-04 82 views
0

我有一个基于Qt WebEngineView(QML)的Windows应用程序。我的应用程序中有网页。有些网页需要用户使用选择文件:如何让网页记得上次打开的文件目录?

<input type="file" /> 

我想知道,有可能是我的应用程序要记得选择一个文件的最后一个目录的用户?

我曾尝试:

  • 设定值属性<input>在我的网页,但它不是由浏览器允许编程设置,见Set default value for a input file form
  • 在Chrome中打开我的网页,Chrome可以记住上一个目录。但在我的应用程序中,每次打开应用程序的安装目录。
  • 在本机打开文件对话框中,我可以设置初始目录,但是可以对网页中的打开文件对话框执行相同操作吗?

我知道这可能是不可能的。任何建议和解决方法,赞赏。

回答

2

WebEngineView元素有一个signal用于Web内容请求文件对话框。

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。 ** 2。**'request.dialogAccept(files);'应该是'request.dialogAccept(fileUrl.toString());'(在单选模式下) –

相关问题