Tuesday, September 17, 2019 - 10:05 ">  •  By Boris Ralchenko  •  Qt, Embedded
This blog is the third in an occasional series on ZeroMQ. For background, read part 1 and part 2. ZeroMQ encourages us to think in terms of patterns — what we are going to do rather than how we're going to do it. We don't need to worry about the how since ZeroMQ takes care of it. The built-in core ZeroMQ patterns are: Request/reply connects a set of clients to a set of services. This is a remote procedure call and task distribution pattern. Pub-sub connects a set of publishers to a set of subscribers. This is a data distribution pattern. Pipeline connects…
Friday, September 13, 2019 - 16:52 ">  •  By Chris Cortopassi  •  QML, Qt
Continuing our QML Controls from Scratch series, this time we will implement a Spinner, also known as a busy indicator. Spinner indicates the progress of a long-running operation when the progress percentage is unknown. (For known percentages, we'd use a ProgressBar.) Spinner uses a Timer to animate rotation. Normally, a designer would provide us with a .png asset to rotate an Image, but for this example we rotate an array of circles, implemented with Rectangle. Spinner has no public properties. Spinner.qml import QtQuick 2.0 Item { id: root // public…
Friday, July 12, 2019 - 13:03 ">  •  By Chris Rizzitello  •  Qt
Today’s market is global and many companies have begun to fully embrace Internationalization in their applications. If you are not familiar, Internationalization is the process of designing a software application in a way that it can be easily adapted for use in languages and locales other than the one it was created for. Here's the Wiki definition: Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.  Here’s how it works in its most basic form. An application provides a…
Monday, July 1, 2019 - 13:15 ">  •  By Steve Holcomb  •  Qt
Regular Expressions are tools for finding patterns in data. They are an extremely powerful tools, but are also full of arcane rules and cryptic combinations of symbols. Good user interface (UI) design can use Regular Expressions, but shouldn’t require the end-user to enter the Regular Expressions themselves. A well-designed interface can allow the end-user to quickly and easily use Regular Expressions when searching, sorting and filtering data. Here’s an example, a short application that demonstrates one use for Regular Expressions. (It is a Qt project, which can be compiled and…
Wednesday, May 8, 2019 - 08:30 ">  •  By Christopher Probst, ICS Development Team  •  Qt, QML, Qt Quick
In part one of this blog series we explained the concept of model-view design and explained the need for a more advanced process for handling dynamic data. In part two, we illustrate the power of Qt Quick’s model-view-delegate framework with an example application that downloads mp3 files from the web. We point out best practices and common pitfalls while writing a C++ model in Qt Quick. Our example is hosted in this GitLab repository, and it requires Qt 5.12 or later and a C++14 compiler. We recommend cloning the repository, opening the project in Qt Creator, and following along…
Wednesday, May 1, 2019 - 11:55 ">  •  By Christopher Probst, ICS Development Team  •  Qt, QML, Qt Quick
The speed on your car’s dashboard, the temperature on your cabin’s thermostat, the heart rate on your wearable device. These values originate from an external source, populate a model, and then make their digital way to a display. The task of the GUI developer is to write code that fetches this data from an external source, organizes it, and then presents it beautifully. Writing such a model, and providing it to a view, relies on the model-view design pattern. With Qt Quick, one way to achieve this is to wrap a third-party library with a QObject and map every value on the display to a Qt…
Monday, April 1, 2019 - 12:45 ">  •  By Christopher Probst  •  Qt
As the first interaction a user will have with your desktop application, critical, necessary and hopefully welcoming, an installer is often overlooked and in need of some love. So to give it its necessary due, here's an overview of a tool that may help: the Qt Installer Framework. Installing the Installer The pre-built version of the framework comes with Qt; you just need to check “Qt Installer Framework 3.0” on the components page of Qt’s installation program. And yes, if you’re wondering, Qt’s own installer was implemented using this framework. It is also available here…
Friday, March 8, 2019 - 13:24 ">  •  By Vy Duong  •  Qt
Yocto can be intimidating for newcomers — even challenging for seasoned users. But, the benefits of gaining ease with Yacto far outweigh the pain endured. Here are four tips and tricks that can come in handy when working with Yocto. (If you’re brand new to Yacto, check out Yocto Quick Start for a solid introduction.) 1 Finding What’s Available BitBake projects are generally organized in folders that contain metadata, configuration files, and recipes. These folders are generally referred to as a layer or a meta-layer. It is a common practice to prepend these project folder names…
Wednesday, February 20, 2019 - 10:57 ">  •  By Stephanie Van Ness  •  Qt, voice assistant, automotive IVI
Voice has always been recognized as an ideal way for a driver to interact with an auto because it reduces driver distraction. However, the lack of familiarity with most current automotive voice systems, along with their constrained set of commands, has resulted in low use and adoption rates. Integrated Computer Solutions (ICS) and The Qt Company are working together to change that. Their goal is to foster new breakthroughs in the use of voice in automotive, and support creation of a safer driving environment. The companies are working together to integrate Amazon Alexa into Qt and take…
Thursday, February 7, 2019 - 09:59 ">  •  By David Chamberlain  •  Qt
Qt Creator wizards are powerful code-generation tools that expedite time to development. In this article, I'll discuss the types of Qt Creator wizards that are available to developers at present, with a focus on templated wizards. I'll also provide helpful tips for preparing to write them. Qt Creator Wizards Here's an example of a screen in a Qt Creator wizard. This particular wizard, packaged with Qt, is a JSON-based templated Qt Creator wizard.  Within Qt Creator, whenever you endeavor to create a new file or project, you are directed to the New File or Project dialog.…
Thursday, February 7, 2019 - 09:05 ">  •  By Leon Lin  •  Qt
Concise Binary Object Representation (CBOR) format is a compact form of binary encoding for data serialization. It is similar to JSON in that most data is represented by name-value pairs, and its design emphasizes compactness for better processing and transmission speeds. The format was created by the Internet Engineering Task Force’s (IETF) Constrained RESTful Environments (CoRE) working group, and is intended to be used with the CoAP protocol to support the Internet of Things. Qt has added support for handling CBOR data in 5.12. This includes classes to encapsulate CBOR data, as well…
Wednesday, February 6, 2019 - 09:37 ">  •  By Leon Lin  •  Qt
When writing an application with Qt, do you need a way to represent dates? Do you want to be able to display dates in a variety of ways, say in a report? Or do you need to do calculations with dates — what date is three years, five months, and four days from now? All this and more can be handled by Qt’s QDate class. QDate represents a date in the proleptic Gregorian calendar and has a variety of useful functions for handling all your date-related needs. An Example To illustrate what you can do with QDate, I’ve written a simple program that demonstrates much of the class’s functionality.…
Friday, May 25, 2018 - 15:04 ">  •  By Boris Ralchenko  •  Qt
Last week, I introduced you to ZeroMQ, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. Now, I’ll show you how to actually build a library from source code. Building a Library from Source Code Our best resource is http://zeromq.org/build:iphone with its instructions on how to build the library for iOS. Or not. The problem is that these instructions are outdated. For instance, the script asks for iOS 5.0 and XCode 4.3.3. The current iOS version is 11.3.1 and the latest version of XCode is 9.3. Clearly the information has not…
Friday, May 18, 2018 - 14:55 ">  •  By Boris Ralchenko  •  Qt
Are you a Qt developer interested in creative ways to build a messaging service for your app? If so, this blog is for you. I’ll introduce you to ZeroMQ and show you what you could do in Qt to implement messaging in your application. Here’s why you should you care about ZeroMQ: It speaks your language in terms of both usage patterns and programming language. While you can do almost everything in terms of Server/Client, it’s more convenient to think in terms of Publisher/Subscriber if that’s what you are after. It's distributed by design and does not require single message broker. That’s…
Wednesday, February 21, 2018 - 11:26 ">  •  By Vy Duong  •  Qt, macOS
In this blog post we'll explore the basic steps to deploy a Qt application for macOS, including assigning an icon for the application and adding assets. It is assumed that you have Qt Creator and Qt version 5.7.1 or later installed and configured on your macOS computer. If not, this blog can be used as a reference point. Getting Started The first thing to understand is the structure of a macOS application. MacOS makes use of the concept of bundling. Mac applications are technically folders with .app extensions. From a normal user's standpoint from the GUI, it is a single…
Wednesday, October 25, 2017 - 09:35 ">  •  By Mark Hatch  •  Qt, Qt World Summit, UX Design, auto IVI
We’re back from another successful Qt World Summit in Berlin, which boasted the largest crowd (1000+) to date. The popularity of the conference is a strong indicator that the Qt community continues to grow as does the number of commercially available products built with Qt. Our booth alone showcased a touchscreen sonar and navigation device for the marine industry, a home mechanical ventilator for respiratory support, a fully integrated, intelligent infusion pump, and a modern and elegant IVI system.  Thanks to everyone who stopped by our booth — and congratulations to our iPhone X…
Thursday, July 20, 2017 - 00:30 ">  •  By Chris Cortopassi  •  QML, Qt, controls
Continuing our QML Controls from Scratch series, this time we will implement a vertical ScrollBar, which is the vertical line segment you often see on the right of a touch user interface as you scroll vertically through a list of items. ScrollBar is quite a bit different than the other controls in this series as it can't be run stand-alone in qmlscene. Rather, it is designed to be a direct child of a ListView or GridView (the ScrollBar's parent). The ScrollBar's position (y) and height are computed with a bit of math, based proportions of Flickable's contentHeight and contentY, as…
Thursday, June 29, 2017 - 09:10 ">  •  By Mark Hatch  •  Qt, licensing
When launching a new project using Qt, you have to decide whether to buy a commercial license or use the free, open source version. It’s an easy decision. Free is better, right? Well, not always. Here's why. In a typical year, ICS works on more than 75 new and unique embedded devices based on Qt. Everything from a flying autonomous taxi service to lifesaving medical devices to an industrial control system for a shrink-wrap pallet machine. But despite the differences in these devices, every ICS proposal for our software development services includes the statement: ICS recommends that…
Saturday, June 3, 2017 - 17:38 ">  •  By Chris Cortopassi  •  QML, Qt, controls
Continuing our QML Controls from Scratch series, this time we will implement a Slider. The Slider has value, minimum, and maximum public properties. Slider is implemented with a single MouseArea that covers the entire control and utilizes drag to handle the user sliding the "pill" (the portion which the user moves ) left and right. The background "tray" (a horizontal line, which can be tapped) is split into left and right pieces so that it doesn't show through the pill when enabled is set to false (since the pill is partially transparent in the disabled state). The only…
Wednesday, April 12, 2017 - 13:50 ">  •  By Chris Cortopassi  •  QML, Qt, controls
Continuing our QML Controls from Scratch series, this time we will implement a Switch. Switch is similar to CheckBox with the exception that it has a slidable pill (implemented with a MouseArea and drag property) and no text property. A Switch can be toggled either by tapping or dragging. Switch.qml import QtQuick 2.0 Rectangle { id: root // public property bool checked: false signal clicked(bool checked); // onClicked:{root.checked = checked; print('onClicked', checked)} // private width: 500; height: 100 // default size border.width: 0.05 * root.height…
Sunday, March 12, 2017 - 14:43 ">  •  By Chris Cortopassi  •  QML
Continuing our QML Controls from Scratch series, this time we'll implement a CheckBox. We'll also get RadioButton almost for free. CheckBox is similar to Button with the exception that it holds checked/unchecked state in the checked property. All QML properties have an associated *Changed signal, so the checkedChanged() signal causes onCheckedChanged to run when the property checked changes. CheckBox also serves as a radio button if a client sets radio: true, which is all RadioButton.qml does. To get multiple radio buttons to act together in a group, put a RadioButton in a ListView…
Monday, February 6, 2017 - 16:18 ">  •  By Chris Cortopassi  •  Qt, QML, controls
QML provides a very powerful and flexible framework for developing user interfaces. The basic elements that are provided are low level, so you typically need to build up the components of your user interface into widget-like controls. Developing a set of common QML controls can greatly reduce the overall development effort of your project. In this series (which assumes you're familiar with basic QML), we will create a set of minimalistic QML controls from scratch (i.e. from QML primitives Item, Rectangle, Text, etc.) that can be used as a starting point for…
Thursday, September 1, 2016 - 16:57 ">  •  By Jeff Tranter  •  Qt, QML, UX, Qt World Summit
Integrated Computer Solutions (ICS), a leader in Qt consulting, custom software development and user experience design, is proud to offer four tactical pre-conference training courses on October 18th at the 2016 Qt World Summit in San Francisco. Whether you’re new to Qt or a seasoned Qt developer, you’ll come away with actionable insight and fresh skills you can use to build compelling products and deliver engaging user experiences. Join us for one of these informative sessions: State-of-the-Art OpenGL and Qt Did you know that virtually all embedded platforms today…
Friday, June 24, 2016 - 15:11 ">  •  By Jeff Tranter  •  Qt, QML
Download the entire webinar series. In QML, I have a Text item with wrapMode: Text.Wrap but the text isn't wrapping. What am I doing wrong? You need to set the width of the Text element, either directly using the width: property or by using anchors. Please refer to slide 3 of the presentation deck for some sample code that you can try. Would it be possible to go into more detail with kit configuration for cross-platform development and remote deployment? Preferably with device configuration and deployment demonstration. To demonstrate the concept you could use any device, but I have a…
Friday, June 10, 2016 - 09:31 ">  •  By Christopher Probst  •  Qt
Download the entire webinar series. What's the best approach for doing webscraping in Qt now that QtWebkit has been deprecated? QtWebEngine is the replacement for QtWebKit and provides similar functionality. Webscraping generally refers to grabbing web pages and extracting content from them, but not rendering them. You should be able to do this with the Qt Network module, pulling the relevant web pages from a server and then parsing the received HTML using string and/or regular expression classes. Finally, if you really need QtWebKit, some people are discussing unofficially continuing to…
Friday, May 20, 2016 - 11:43 ">  •  By ICS UX Design Team  •  QML, Qt Quick
Download the entire webinar series. Do the Qt Quick Controls 2 include all the capabilities of Qt Quick Controls 1? While they are similar, there are differences between the controls offered and the APIs. The Qt documentation does a good job of describing the differences. See http://doc.qt.io/qt-5/qtlabscontrols-differences.html How would I create and size scroll bars for multiline text? See the Qt documentation for ScrollBar and Flickable and the Scroll Bar Example. How does the Text wrapMode work? wrapMode is a property of the Text QML type and takes one of four values. See http…
Wednesday, May 18, 2016 - 10:05 ">  •  By ICS Development Team  •  OpenGL, Assimp
Hello and welcome back.   This is the follow-on to our original article,  "Qt and OpenGL: Loading a 3D Model with Open Asset Import Library (ASSIMP)." Last time we covered how to use ASSIMP to load a model into our data structures such that is was ready for rendering with OpenGL.  This time, we’re going to cover how to write a program to actually render these models. We’re obviously going to Qt as our platform layer (it’s in this blog’s title) but we’re going to choose QOpenGLWindow from among all the various ways you can integrate OpenGL with Qt.    (See…
Friday, May 6, 2016 - 16:11 ">  •  By Brian Quinn  •  Widgets, Qt
Download the entire webinar series. In the case of designing an application for an embedded platform instead of desktop, are there any differences in the approach? Yes. This is a large topic, but some of the considerations include the need to use a cross-compiler and deploying the code to a target system ensuring the application is suitable for the embedded system's RAM, filesystem storage, CPU, and GPU. Also, using a suitable user interface for the type of display (e.g. touchscreen) to ensure Qt is properly configured and built for the embedded platform including any hardware drivers that…