﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-SongGweRe的Cpp学习笔记-文章分类-Qt for Android</title><link>http://www.cppblog.com/shaoxie1986/category/20343.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 24 Jan 2013 09:16:46 GMT</lastBuildDate><pubDate>Thu, 24 Jan 2013 09:16:46 GMT</pubDate><ttl>60</ttl><item><title>Qt for Android访问手机SD卡文件路径的问题解决办法（for necessitas alpha 4.1）</title><link>http://www.cppblog.com/shaoxie1986/articles/197468.html</link><dc:creator>松娃</dc:creator><author>松娃</author><pubDate>Tue, 22 Jan 2013 07:12:00 GMT</pubDate><guid>http://www.cppblog.com/shaoxie1986/articles/197468.html</guid><wfw:comment>http://www.cppblog.com/shaoxie1986/comments/197468.html</wfw:comment><comments>http://www.cppblog.com/shaoxie1986/articles/197468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shaoxie1986/comments/commentRss/197468.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shaoxie1986/services/trackbacks/197468.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">&nbsp;开始接触Qt for Android这个东西，发现很不错，将几个Qt自带的quick的demo编译了一下，成功的运行在了我的android手机上，挺好玩的。就想着用quick开发一个手机图片浏览小应用，来学习一下。先解决怎么读取SD卡图片读取的问题，就先用了一个简单的代码来实现一下显示图片：</span><br />main.qml 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #800000">import&nbsp;QtQuick&nbsp;1.1<br /><img id="Codehighlighter1_29_171_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_171_Open_Text.style.display='none'; Codehighlighter1_29_171_Closed_Image.style.display='inline'; Codehighlighter1_29_171_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_29_171_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_29_171_Closed_Text.style.display='none'; Codehighlighter1_29_171_Open_Image.style.display='inline'; Codehighlighter1_29_171_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top">Rectangle&nbsp;</span><span id="Codehighlighter1_29_171_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">{<img alt="" src="http://www.cppblog.com/Images/dot.gif" />}</span><span id="Codehighlighter1_29_171_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;480<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;800<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source:&nbsp;"/mnt/sdcard/LoveWallpaper/save/25510-102.jpg"<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchors.fill:&nbsp;parent<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">}</span></div><span style="color: #000000">&nbsp;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结</span>果没有显<span style="color: #000000">示图片，显示</span><span style="color: #000000">出来的只</span><span style="color: #000000">是空白：</span><br /><img height="960" alt="" src="http://www.cppblog.com/images/cppblog_com/shaoxie1986/1.png" width="540" border="0" /><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">而且</span><span style="color: #000000">当前调试窗口里面提示说</span><span style="color: #000000">Q</span><span style="color: #000000">ML </span>Image: Cannot open<br /><img height="58" alt="" src="http://www.cppblog.com/images/cppblog_com/shaoxie1986/2.jpg" width="875" border="0" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查了一下assets这个东西，发现这个东西是android专有的东西，简单来讲就是：<span style="color: #ff0000" minmax_bound="true">用于存放需要打包到应用程序的静态文件，以便部署到设备中。</span><span style="color: #000000" minmax_bound="true">在看了下qt fro android写出来的apk：<br /><img height="116" alt="" src="http://www.cppblog.com/images/cppblog_com/shaoxie1986/4.jpg" width="627" border="0" longdesc="" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它是将qt的qml文件给打包到里面进行使用了，默认的路径是从assets开始的，也就是说我那个地址被转换成</span><span style="color: #000000" minmax_bound="true">了</span><span style="color: #ff0000" minmax_bound="true">assets<span style="color: #ff0000">/mnt/sdcard/LoveWallpaper/save/25510-102.jpg，</span><span style="color: #000000">这当然找不到我sd卡里的图片了，查了些资料，要访问android文件系统里的文件得加上一个前缀</span><span style="color: #ff0000">file://</span><span style="color: #000000">,也就是说代码得改成如下： 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #800000">import&nbsp;QtQuick&nbsp;1.1<br /><img id="Codehighlighter1_29_178_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_178_Open_Text.style.display='none'; Codehighlighter1_29_178_Closed_Image.style.display='inline'; Codehighlighter1_29_178_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_29_178_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_29_178_Closed_Text.style.display='none'; Codehighlighter1_29_178_Open_Image.style.display='inline'; Codehighlighter1_29_178_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top">Rectangle&nbsp;</span><span id="Codehighlighter1_29_178_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">{<img alt="" src="http://www.cppblog.com/Images/dot.gif" />}</span><span id="Codehighlighter1_29_178_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;480<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;800<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source:&nbsp;"file:///mnt/sdcard/LoveWallpaper/save/25510-102.jpg"<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchors.fill:&nbsp;parent<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />}<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样就能完成显示了，效果如下图：<br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/shaoxie1986/3.png" border="0" longdesc="" /><br />做个笔记。<br />欢迎转载，不过请注明转载来源。<br /></span></span></div> <img src ="http://www.cppblog.com/shaoxie1986/aggbug/197468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shaoxie1986/" target="_blank">松娃</a> 2013-01-22 15:12 <a href="http://www.cppblog.com/shaoxie1986/articles/197468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>