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 桥和东西)的主要内容,如果未能解决你的问题,请参考以下文章