A consulting project I worked on recently needed to display an interactive PDF document in the style of Adobe Reader on a touchscreen device running embedded Linux using Qt and QML. I have been working with Qt for nearly ten years and had not come across this requirement before, so of course I turned to the Internet to see what was available and I came across this page, which lists all options available for dealing with PDF files from Qt.
Amazingly, Qt natively supports writing PDF files using a few lines of code via QPrinter. However, it does not support reading or rendering PDF files out…
Thursday, December 11, 2014 - 15:22
">
•
By ICS Development Team
•
IVI, QNX, Infotainment Systems, In-vehicle infotainment
Congratulations to our friends at QNX for powering Ford's next Connected Car System, Sync 3.
Given that Qt is the standard GUI toolkit for QNX, I suspect that this means that Qt will soon become the de facto standard for IVI System development as well.
Read more about this in the articles below:
Ford drops Microsoft and revamps its Sync system for more speed - Engadget
Ford Sync 3 revealed: a whole new system with QNX - Slashgear
Ford Sync 3 drops Microsoft, puts MyFord Touch out to pasture - Cnet
Wednesday, November 26, 2014 - 10:38
">
•
By Jeff Tranter
•
Raspberry Pi, Qt, Wayland, Maynard, Embedded
Since my last blog about the Raspberry Pi in August, there have been a number of interesting new developments and the Raspberry Pi project has continued to move ahead.
As expected, the new Raspberry Pi Model A+ was released. With the Model A+, the Raspberry Pi Foundation has been able to achieve a price reduction over the $25 Model A, with a suggested retail price of only $20. Like the Model A, it has 256MB of RAM, 1 USB port and no built-in Ethernet. Like the model B+, it features a 3.5mm TRRS jack providing composite video and audio output, uses a MicroSD card for storage and has more GPIO…
In this blog post, I will cover a new class introduced in Qt 5.4.0: QStorageInfo. This post is based on a Lightning Talk I gave at Qt Developer Days 2014 in San Francisco.
Overview
The QStorageInfo class provides information about mounted filesystems, also known as volumes. It allows retrieving information about a volume's storage space, mount point, label and filesystem name. New in the Qt 5.4.0 release, QStorageInfo is part of the Qt Core module.
The supported platforms are Windows, WinRT, Mac OS X, Linux and Android. It should also work on the various flavors of Unix such as BSD,…
This week I'm here at the Qt Developer Days North America conference and I wanted to share a brief report on the first day of the show.
The event is being held in the Bay Area at the San Francisco Airport Marriott Waterfront in Burlingame, California, the same venue as last year.
The North American Developer Days is similar to the European show held last month in Berlin, Germany with many dynamic speakers, some of whom spoke in Germany as well. The two shows have a slightly different flavor. My perception is that most of the people attending the European show are…
Monday, October 20, 2014 - 10:49
">
•
By Jeff Tranter
•
Qt Developer Days, Conference, Berlin, Europe
I recently returned from the Qt Developer Days Europe conference and I wanted to share a brief report on some of the highlights of the show.
The event was held from October 6 through 8 in Berlin, Germany. The conference was held at a new venue this year, the Berlin Congress Center. The conference last year outgrew the Cafe Moskau as it offered limited space for seating during the keynote within the main building. The new location allowed for more attendees and offered a better layout for the presentation rooms, vendor booths and break areas.
Similar to other years, the conference started…
ICS is proud to promote our partner QNX Software Systems’ web seminar tomorrow (Thursday, Oct 9): “Simplifying the software integration & certification challenges for connected medical devices” Attend this webinar to learn about:
Integrating middleware components and libraries, such as OpenCV for imaging, Bluetooth and Wi-Fi for connectivity, Qt, Open GL for UI
Reducing scope, timeframe to compliance (to standards like IEC 62304), and costs
Gain an understanding of the challenges medical device manufacturers face in developing connected medical devices.
This is information…
When BlackBerry introduced its new Qt-based BlackBerry 10 platform for smart phones and tablets, it generated a lot of interest in Qt on mobile. BlackBerry 10 is based on the QNX 1 operating system, a subsidiary of BlackBerry.
What is perhaps not as well known, is that Qt is well supported on QNX as an embedded operating system in its own right.
QNX is a commercial POSIX-compliant real-time operating system intended for embedded systems applications. Originally developed in the early 1980s by Quantum Software Systems, later renamed QNX Software Systems, it was acquired by…
Representing a significant milestone towards the next Qt release, the alpha version of Qt 5.4.0 came out this week. Qt 5.4.0 will include a number of interesting new features. In this blog post, I will briefly mention just a few of the highlights.
QtWebEngine, the replacement for QtWebKit that I described in a blog post a few months ago, will be included in the Qt 5.4.0 release and will be supported on the following desktop platforms: Linux, Mac OS X and Windows.
Another new module being added is QtWebChannel. This facility makes any QObject accessible to arbitrary JavaScript clients,…
Monday, August 25, 2014 - 10:43
">
•
By Jeff Tranter
•
Qt, QML, virtual keyboard, on-screen keyboard, Maliit
With touchscreen-based systems such as tablets, smart phones and embedded devices, there is often a need for a virtual or on-screen keyboard. Qt itself does not provide a virtual keyboard and I am often asked for recommendations on approaches for a virtual keyboard. I thought this would make a good topic for a short blog post. Let's look at some of the options available.
First, the operating system may provide a virtual keyboard for you, in which case your application will not need to worry about it. This is typically the case for desktop and mobile platforms such as Android,…
Monday, August 11, 2014 - 11:04
">
•
By Jeff Tranter
•
Qt, QML, Raspberry Pi, Yocto, Wayland, Embedded
It's summertime here in the Northern hemisphere, and many people are on vacation (I just got back from a week off, myself). Despite that, we are very busy at ICS with consulting projects and preparing for the upcoming Qt Developer Days (1) conferences to be held in Berlin and San Francisco this year. Given the lack of time, this blog post is going to be a grab bag of updates to earlier blog posts, with lots of links to more information.
The Raspberry Pi (2) continues to be very popular, both as a platform for education as well as embedded computing. To better support the…
The Qt 5.3 release made a lot of "under the hood" improvements to the internals of the Qt printing system. There were also some changes visible at the API level. One of the more noticeable changes was to add enhancements to the QPrinterInfo class. In this blog post, I'll go over this class and present an example application illustrating how to use it.
The QPrinterInfo (1) class returns information about printers available on a machine and has been included in Qt since version 4.4. It is part of Qt's PrintSupport module, so when using qmake as your build system, you need to enable…
Monday, June 30, 2014 - 14:25
">
•
By Justin Noel
•
Qt Contributors Summit, Qt, Open Source, Qt Project
The Qt Contributors Summit occurred June 10-11 in Berlin. Here is a quick summary of my impressions:
1) Unifying Qt
Qt Project is highly interested in unifying Qt Commercial offerings with Qt Open Source. This was a major point made by Lars Knoll in his keynote speech and there were two discussion sessions on the matter.
They are worried about the confusion in the marketplace as to what Qt Open Source contains vs. Qt Commercial. The project would like to have Qt available for download from one source and have the installer / maintenance tool offer extra commercial packages.
This…
A new feature in Qt version 5 is an executable program similar to qmlscene that can execute QML files. It is sometimes referred to as the QML Tooling or QML Run-time, although both of these terms are sometimes used to refer to other aspects of QML. A few colleagues mentioned to me that they were not familiar with this feature of Qt, so I thought it would make a good topic for a short blog post.
The program is called qml. Unlike qmlscene, it supports the standard shebang (1) feature of Linux, UNIX and other POSIX systems that allows specifying the interpreter to run a program. By…
Friday, May 30, 2014 - 10:38
">
•
By Jeff Tranter
•
Motif, CDE, Unix, Raspberry Pi, X11, Linux, Retrocomputing
Introduction
In this blog post, we'll look at a couple of older graphical user interface toolkits that were popular in the 1980s and 1990s.
Why would anyone care about old software like this? One reason is purely for nostalgia, particularly if you used these systems back in the days when they were state-of-the-art. They can also provide a glimpse into how early graphical user interfaces worked, and how they influenced today's systems. Another possibility is that you have a legacy application that you need to continue to support, but need to move off of obsolete hardware (such as a UNIX…
This blog post is the first in a series that will cover using OpenGL with Qt. In this installment, we will look at how to use Open Asset Import Library (Assimp) (1) to load 3D models from some common 3D model formats. The example code requires Assimp version 3.0. The code also uses Qt for several convenience classes (QString, QVector, QSharedPointer, etc...).
Read Part 2 Qt and OpenGL: Loading a 3D Model with Open Asset Import Library (ASSIMP)
Introduction
First, we will create some simpl e classes for holding the data for the model. The structure MaterialInfo will contain information…
Perhaps you have been trying to do more with QML than just using the basic elements like rectangles, text and images, or maybe you have been struggling to implement a user interface that doesn't map well into these basic elements. If so, the QML Canvas may be just the solution you are looking for. In this post, we'll look at Canvas (1), a powerful and useful QML element that is part of Qt Quick.
Introduction
The basic QML visual elements are quite low-level, consisting of things like images, rectangles and text. Often you can build your user interface by combining these basic building…
QtWebEngine (1) is a new web rendering engine that is planned to replace QtWebKit in Qt. In this blog post, I'll give a short tutorial describing how to build the current version of QtWebEngine on a Linux desktop system, so you can run some example applications and take a look at the features and API.
What is QtWebEngine?
QtWebEngine is an effort to build a new web-rendering engine for Qt based on the Google Chromium browser. QtWebKit, built on the open source WebKit engine, has been a part of Qt for some time, but for a number of reasons (3)(4), including Google leaving the WebKit project…
In part one of this series I introduced the BeagleBone Black, a low-cost embedded computer platform that supports Qt. In part two, we looked at how to get Qt 4 up and running on this platform. In this installment, we'll look at how to get the latest release of Qt, Qt 5, running on the BeagleBone Black.
As with Qt 4, we can choose from several approaches.
Pre-Built Packages
Pre-built Qt 5 binary packages are available for Ubuntu. The top-level package is called "qt5-default" and can be installed with apt-get. It uses X11, so you will need an X server and an X11-based desktop…
In this post, I will briefly describe a new class, QTimeZone (1), one of several that were introduced in Qt 5.2, and show an example application that uses it.
Introduction
The QTimeZone class provides detailed information about world time zones, including how to convert between Coordinated Universal Time (UTC), the primary time standard by which the world regulates clocks and time, and local time for a specific time zone, with the details of daylight savings time changes as well.
Most applications that work with times and dates will generally find it…
In part one of this series I introduced the BeagleBone Black, a low-cost embedded computer platform that supports Qt. In this second blog post, I'll look at how to get Qt 4 up and running on this hardware.
Introduction
The BeagleBone Black can run a number of different operating systems, but most users are likely to use it to run some version of embedded Linux, as it was designed as a platform for Open Source software.
Out of the box, it runs the Ångström Linux distribution. Another popular operating system choice is Ubuntu Linux. I'll use these two distributions as…
In this blog posting, we will describe the steps needed to build Qt 5 on the Toradex T30 hardware platform.
This blog post was originally published on Jul 10, 2013. These instructions have now been updated to simplify them, add some additional information and to build the latest Qt version, 5.2.0.
The Toradex Colibri T30
The Toradex Colibri T30 is an ARM development platform distributed by Toradex, a company in Switzerland that provides a number of ARM and Intel based development products. Their web site is here.
Hardware
The kit used in this document is…
In this blog post, I present a tutorial on setting up and using one of the libraries from the new KDE Frameworks 5, a collection of add-ons to Qt. Specifically, we'll look at KArchive and what is involved in setting up KArchive on Ubuntu Desktop Linux.
Note: If you are reading this after April 2014, there may be a beta or later release available and some of the details and software versions described here may be out of date. Check the links listed under References for the latest information.
Introduction
The KDE project(1) has started an initiative called KDE Frameworks 5 to…
Monday, February 10, 2014 - 08:47
">
•
By Jeff Tranter
•
Qt, Qt 4, Qt 5, BeagleBone, BeagleBoard, BeagleBone Black
In this blog post I will look at the BeagleBone Black, a low-cost embedded computer platform that supports Qt.
Introduction
There are a number of inexpensive embedded platforms that support Qt and can be used for learning, prototyping or for development of products that can't justify a dedicated hardware design (such as those with low production volumes). The Raspberry Pi1, at US$35 (US$25 for the Model A), is the lowest cost platform that supports embedded Linux and Qt. Recently the BeagleBone Black2 has become available at a similar price point of US$45.
Hardware
The BeagleBoard3…
Many programs need to accept command line options. For all but the simplest programs, the logic to validate and parse command line options can be significant. Support for handling this beyond what is provided by the standard C/C++ run-time library has been a long-missing Qt feature.
While it may appear simple, it is surprisingly hard to develop a clean API that will be both easy to use and satisfy most users' requirements. After several failed attempts in the past, thanks to the efforts of Qt and KDE developer David Faure, command line parsing support is now in Qt 5.2.0. It was…
One of the standard architectures of software systems is to have an application that talks to a server in some form. For example, a Qt application that talks to an Apache-based server with a REST interface. We see this with many of the applications we write for customers.
The code in this blog will be Qt and C++ based. However, once the SSL certificate has been added to the system, it's perfectly fine to use the certificate from QML requests as well.
There are several steps that need to happen to make this connection secure. One is to use an encrypted connection for which this article will…
Qt 5.2.0 is now out! In this blog post, we'll look at some of the highlights of this new release.
Release Timeline
Qt 5.2 is a minor release of Qt (as opposed to a major release like Qt 6 or a patch release like 5.1.2). As such, it is binary compatible with other Qt 5 releases. The release occurred on the following timeline:
Alpha Release:
30 Sep 2013
Beta Release:
17 Oct 2013
Release Candidate:
29 Nov 2013
Final:
12 Dec 2013
New Features
An excellent wiki page lists the new features of Qt 5.2.0 in detail, so rather than…
This document will explain how to build Qt 5.2.0 beta1 and QtWayland for Raspberry Pi (http://www.raspberrypi.org/). The procedure will likely work with the Qt 5.2.0 release candidate and final release, once they become available.
There are a variety of HOWTOs and other documents on the web on how to build one or the other – this document will attempt to walk you through each step. As Qt and QtWayland are constantly under development, this document may not be precisely up to date going into the future.
For a good overview of Wayland, see the Wayland wiki page here .
We will build Qt 5.2.0…