QML:在 Android 上选择图像(没有 java 桥和东西)

Posted

技术标签:

【中文标题】QML:在 Android 上选择图像(没有 java 桥和东西)【英文标题】:QML: select image on Android (without java bridges and stuff) 【发布时间】:2017-12-04 14:20:33 【问题描述】:

我想从用 Qt 5.9 编写的应用程序中的现有文件中选择一个图像(使用 Qt Quick 和一些 c++)。我尝试使用FileDialog from QML(官方示例here)但是当我在模拟器中运行它时,它看起来像这样:

我确实阅读了这篇博文 http://amin-ahmadi.com/2015/12/08/how-to-open-android-image-gallery-in-qt/,其中解释了如何将本机代码用于画廊选择器,但我想知道 Qt 是否同时以更直接的方式使此类任务易于使用。

编辑:提示是 FileDialog.shortcut documented here 说:

包含用户图片或照片的目录。它总是一个 文件类型:URL;但在某些平台上,它会是专门的,例如 FileDialog 将被实现为画廊浏览器对话框。

【问题讨论】:

你试过doc.qt.io/qt-5/qml-qtquick-dialogs-filedialog.html @m7913d 这是我用的那个,我只喜欢示例页面而不是文档,我会添加问题的链接。 但是我们在这里看到的,如果我错了,请纠正我,是示例中创建的按钮,而不是本机 FileDialog 的按钮。您是否尝试过运行FileDialog Detailed Description 中的最小示例? 您可以使用或修改此对话框github.com/dobokirisame/qml-filedialog @AndreySemenov:谢谢,看起来很不错!我仍然会留下这个问题,以防万一在某个时候有一种简单的方法可以调用本机选择器。 【参考方案1】:

迟到总比没有好:

您的应用程序可能使用高 DPI 缩放,它会在具有较高 DPI 的显示器上自动缩放 QtQuick.Controls 2。在 main.cpp 中:

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

基本上,您应用中的 px 大小不再代表物理像素。一些(较旧的)Qt 组件,其中之一是 FileDialog,在该设置上不能按预期工作。删除它应该可以解决您的问题,但可能会影响您的应用程序的视觉外观。更多信息:https://blog.qt.io/blog/2016/01/26/high-dpi-support-in-qt-5-6/

您可以尝试使用 FolderListModel 构建自己的 FileDialog:https://doc.qt.io/qt-5/qml-qt-labs-folderlistmodel-folderlistmodel.html

【讨论】:

【参考方案2】:

还有一个 QML 组件可用于显示和选择单个或多个图像。你可以在这里找到更多信息:https://felgo.com/updates/release-3-2-0-qt-5-12-3-subscriptions

您也可以直接在手机上测试:https://felgo.com/web-editor/?snippet=77c7ad94

【讨论】:

以上是关于QML:在 Android 上选择图像(没有 java 桥和东西)的主要内容,如果未能解决你的问题,请参考以下文章

在三星 Galaxy 设备上选择图像会旋转

无法在 IOS 和 Android 移动设备上选择文件

是否可以防止在网页上选择图像?

在android上选择文件夹对话框?

在 FabricJS 上选择 IText 的文本

在 iPad 上选择照片并从相机拍摄