我想在Qt上的Web程序中访问我的软件中的本地文件(读取二进制文件)。
似乎已经有一个函数可以执行此操作:QFileDialog :: getOpenFileContent。但是我找不到任何相关示例来展示如何使用此功能。如果有人帮助我如何使用此功能,我将不胜感激。
谢谢。
答案 0 :(得分:2)
由于Qt WebAssembly在同一javascript沙箱中运行,因此无法轻松访问本地文件系统,这就是为什么我们想出一种可以访问的方法,即getOpenFileContent。
您可以使用src / gui / platform / wasm / qwasmlocalfileaccess_p.h中的getOpenFileContent使用的私有API。请参阅790cf25f9d811f2cda7e252b4f1844e8fce27e2a
这两个选项都将打开文件对话框。
您还可以先使用Emscripten的filesytem API将文件同步到沙箱中,然后就可以像访问应用程序本地一样访问它。 https://emscripten.org/docs/api_reference/Filesystem-API.html
答案 1 :(得分:1)
我现在没有Qt 5.13,但是这种方法应该可以这样工作:
QFileDialog::getOpenFileContent(tr("Image Files (*.png *.jpg *.bmp)", [](const QString &fileName, const QByteArray &data){
// use data
});
实现这一目标的更直接的方法是:
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
{
// handle file could not be opened...
return;
}
QByteArray blob = file.readAll();