{"id":1879,"date":"2016-09-01T18:23:12","date_gmt":"2016-09-01T23:23:12","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=1879"},"modified":"2016-09-01T18:23:12","modified_gmt":"2016-09-01T23:23:12","slug":"raspberry-qt-part-13-a-bit-of-explanation","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/","title":{"rendered":"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation"},"content":{"rendered":"<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"alignleft size-medium wp-image-1883\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff-300x221.png\" alt=\"qml_diff\" width=\"300\" height=\"221\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff-300x221.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff-768x566.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff-730x538.png 730w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png 900w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>Please read Part 12 first.<\/p>\n<p style=\"text-align: justify;\">Were this a book I would be printing and explaining a lot of code. This isn&#8217;t a product people are paying for so it will be a bit more limited. Hopefully you pulled down the original source zip posted quite a ways back in this thread. You should have also pulled down the Pi QML zip file from my previous post. Now you just have to pull down this file.<a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/deskQml.zip\">deskQml<\/a> to have the whole enchilada.<\/p>\n<p style=\"text-align: justify;\">The first thing to rant about is the amount of hand coding. This is a simple screen, not even well done. If it was done correctly the entire screen would have been enclosed in a HBOX layout so maximizing the screen would actually resize everything to use the entire screen. I didn&#8217;t do that with the UI file either so tried to keep this an apples to apples comparison.<\/p>\n<p style=\"text-align: justify;\">Yes, the designer can be a PITA. Yes, there is some urban lore you have to absorb either from the wink and a nod club or by crawling naked through broken glass on your own. That said, I personally don&#8217;t care how <em>yuge<\/em> my UI file gets. I like having things like stacked widgets at my disposal. I would really hate to seem someone try to code the equivalent of a 12 screen stacked widget in QML. I keep reading about how QML is supposed to be for dynamic and complex screens, but I&#8217;m just not seeing it. Most importantly, this puddle of bits is INTERPRETED and part 12 showed you the extreme processor price one pays for that. Personally, I believe QML is only for people who want to work with nothing but their <em>own<\/em> rectangles.<\/p>\n<p style=\"text-align: justify;\">Rather than show and explain the code as I tend to do in my books, we will just discuss the Meld diff image in this post. Hopefully your browser will let you zoom it to full screen and hopefully you have a real screen, not one of those identity theft enablers. On the left is the code from the PC, on the right is the code from the Pi. Naturally I developed on my desktop with multiple monitors first. Then when I tried to build it on the Pi I got burned.<\/p>\n<p style=\"text-align: justify;\">Visually one cannot tell a difference in the running application. The Pi had a slightly older Qt release so it only had 1.2, not 1.4 of controls and their corresponding styles. At least on the right hand side you can see how the grizzled QML hacks do it. They have a rectangle which fills the parent and they give it the color. Add it first so everything is visually added on top of it which makes it _seem_ like a background color for the window. Instead of being an attribute of an object, the color is yet another object.<\/p>\n<p style=\"text-align: justify;\">NOTE: If you declare an ApplicationWindow without a background color of any kind it is still given a background color based on the desktop\/OS\/environment\/platform.<\/p>\n<p style=\"text-align: justify;\">When you dig down deep in the C++ Qt documentation\/lore you will find Qt optimizes screen updates for embedded platforms. Given the processor load we saw just moving the mouse around in the QML version of the application this cannot possibly be true for QML. What I mean by &#8220;optimizes&#8221; is if the GUI event queue gets 30+ events to repaint, say a button or an image, before the screen update actually has a chance to happen, Qt is smart enough to throw all but the last one away. The final version is what is important. Yes, there are ways to force a screen update if you really wish to slow your application down, but, if you are dynamically adding a bunch of objects, say file icons because you are displaying directory contents in a dialog, it is much nicer to have them all appear at once than watch ice melt. There have been other <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qwidget.html\">improvements<\/a> as well:<\/p>\n<blockquote>\n<h3>Native Widgets vs Alien Widgets<\/h3>\n<p>Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.<\/p>\n<p>Should you require the old behavior with native windows, you can choose one of the following options:<\/p><\/blockquote>\n<ol class=\"1\">\n<li>\n<blockquote><p>Use the <code>QT_USE_NATIVE_WINDOWS=1<\/code> in your environment.<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote><p>Set the <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qt.html#ApplicationAttribute-enum\">Qt::AA_NativeWindows<\/a> attribute on your application. All widgets will be native widgets.<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote><p>Set the <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qt.html#WidgetAttribute-enum\">Qt::WA_NativeWindow<\/a> attribute on widgets: The widget itself and all of its ancestors will become native (unless <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qt.html#WidgetAttribute-enum\">Qt::WA_DontCreateNativeAncestors<\/a> is set).<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote><p>Call <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qwidget.html#winId\">QWidget::winId<\/a> to enforce a native window (this implies 3).<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote><p>Set the <a href=\"http:\/\/doc.qt.io\/qt-4.8\/qt.html#WidgetAttribute-enum\">Qt::WA_PaintOnScreen<\/a> attribute to enforce a native window (this implies 3).<\/p><\/blockquote>\n<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Not to mention <a href=\"https:\/\/blog.qt.io\/blog\/2009\/02\/27\/braindump-graphics-view-and-the-joys-of-off-screen-rendering\/\">off-screen rendering<\/a> and many other speed improvements.<\/p>\n<p style=\"text-align: justify;\">Other than the changes you see in the diff image, my Qt environments were close enough to allow the application to build and run without fatal incident. Yes, I had to follow down the checklist created with the &#8220;refresh&#8221; post.\u00a0 qml-module-qtquick-extras was not in the repo at all and libqt5sql5-psql is in the repo but broken. Thankfully I need that for something else on my desktop.<\/p>\n<p style=\"text-align: justify;\">There is one issue I need to mention. This is another pet peeve I have with non-proprietary scripted languages. You see DCL (Digital Command Language) is a proprietary scripting language for the OpenVMS operating system. As such it is safe, trusted and tested. JCL (Job Control Language) from IBM is what it sounds, a method of assembling job steps. Once again this is a thing which is proprietary, safe, trusted and tested. In the OpenSource world where any 12 yo with a keyboard and Internet access can submit stuff into a repo which cascades outwards, you continually get victimized by (&amp;*)(*&amp; like this:<\/p>\n<pre style=\"text-align: justify;\">QML Debugger: Waiting for connection on port 46163...\r\n13:07:30 Level: 7 Message: Root object had name of window\r\n13:07:30 Level: 7 Message: Result of connecting signals 1\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nJITed object file architecture armv4 is not compatible with target architecture arm.\r\nqml: received YELLOW\r\n\r\nqml: sending BLUE\r\nQThread: Destroyed while thread is still running<\/pre>\n<p style=\"text-align: justify;\">Okay, the QThread thing at the end is me. I did not connect up a signal from the engine to set the shutdown flag for a graceful exit. I&#8217;m talking about the &#8220;object file architecture.&#8221; This is a javascript\/QML issue with plenty of fingers to point in plenty of directions. My issue isn&#8217;t this particular debacle, rather it is that debacles like these <em>always<\/em> happen with OpenSource scripting things.<\/p>\n<p style=\"text-align: justify;\">For those who do not know, JIT stands for Just In Time. Each and every time you run your QML program, the QML portion is compiled to a state many refer to as &#8220;p-compiled.&#8221; Some even call it &#8220;Taint&#8221; because &#8220;taint&#8221; binary and &#8220;taint&#8221; source. It is a set of byte codes the engine\/VM recognize but certainly not the CPU. Somewhere along the way someone tried desperately to shave perhaps 3% of CPU utilization and some hefty poundage from the Qt package by only including support for armv4 (at least in the Raspbian repos, but it could go all the way back to Digia.)<\/p>\n<p style=\"text-align: justify;\"><strong>Assignment:<\/strong><\/p>\n<p style=\"text-align: justify;\">Get rid of the annoying QThread: message. I humbly suggest you change SerialThread::shutDown() from a public method to a public slot to make your life easier. You probably want to look at <em>all<\/em> of the signals QApplication has to offer as well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Please read Part 12 first. Were this a book I would be printing and explaining a lot of code. This isn&#8217;t a product people are paying for so it will be a bit more limited. Hopefully you pulled down the original source zip posted quite a ways back in this thread. You should have also pulled down the Pi QML zip file from my previous post. Now you just have to pull down this file.deskQml &hellip; <a title=\"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/\"><span class=\"screen-reader-text\">Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1883,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,1113],"tags":[1198,159,1034],"class_list":["post-1879","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information-technology","category-raspberry-pi","tag-qml","tag-qt","tag-raspberry-pi","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Please read Part 12 first. Were this a book I would be printing and explaining a lot of code. This isn&#8217;t a product people are paying for so it will be a bit more limited. Hopefully you pulled down the original source zip posted quite a ways back in this thread. You should have also pulled down the Pi QML zip file from my previous post. Now you just have to pull down this file.deskQml &hellip; Raspberry Qt \u2013 Part 13 &#8211; A Bit of ExplanationRead more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-09-01T23:23:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"663\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\"},\"headline\":\"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation\",\"datePublished\":\"2016-09-01T23:23:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/\"},\"wordCount\":1195,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/qml_diff.png\",\"keywords\":[\"QML\",\"Qt\",\"Raspberry Pi\"],\"articleSection\":[\"Information Technology\",\"Raspberry Pi\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/\",\"name\":\"Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/qml_diff.png\",\"datePublished\":\"2016-09-01T23:23:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/qml_diff.png\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/qml_diff.png\",\"width\":900,\"height\":663},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/raspberry-qt-part-13-a-bit-of-explanation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/","og_locale":"en_US","og_type":"article","og_title":"Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog","og_description":"Please read Part 12 first. Were this a book I would be printing and explaining a lot of code. This isn&#8217;t a product people are paying for so it will be a bit more limited. Hopefully you pulled down the original source zip posted quite a ways back in this thread. You should have also pulled down the Pi QML zip file from my previous post. Now you just have to pull down this file.deskQml &hellip; Raspberry Qt \u2013 Part 13 &#8211; A Bit of ExplanationRead more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/","og_site_name":"Logikal Blog","article_published_time":"2016-09-01T23:23:12+00:00","og_image":[{"width":900,"height":663,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/"},"author":{"name":"admin","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c"},"headline":"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation","datePublished":"2016-09-01T23:23:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/"},"wordCount":1195,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png","keywords":["QML","Qt","Raspberry Pi"],"articleSection":["Information Technology","Raspberry Pi"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/","name":"Raspberry Qt \u2013 Part 13 - A Bit of Explanation &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png","datePublished":"2016-09-01T23:23:12+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/09\/qml_diff.png","width":900,"height":663},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/raspberry-qt-part-13-a-bit-of-explanation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Raspberry Qt \u2013 Part 13 &#8211; A Bit of Explanation"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"]},{"@type":"Person","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","caption":"admin"},"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1879"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1879\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/1883"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}