Image

Digia’s Lars Knoll Discusses The Qt GUI Framework

May 20, 2013
Qt is a portable framework that provides graphical and application services. Embedded/Systems/Software Editor Bill Wong talks with Digia’s CTO, Lars Knoll, about Qt.

Qt, pronounced “cute” or “cue-tee,” is a cross-platform graphical user interface (GUI) framework. It has a long history, starting with Nokia and eventually winding up with Digia. The Qt Project is the open-source version supported by Digia. Qt is licensed under GPL v3 and LGPL v2. It is also available as a commercial license from Digia.

Applications using Qt that use the open-source licenses need to follow the same license, so their source would need to be made available. The commercial license allows closed-source projects. Digia also provides support options. Qt runs on a wide variety of platforms. It also is the base for the open-source KDE Linux desktop environment.

Related Articles

Qt is written in C++, but it has its own scripting language as well. Its graphical presentation is its most notable part, but it also provides non-graphical features such as network support, thread management, file handling, and XML parsing and SQL support.

Qt’s cross-platform application programming interface (API) allows an application to run on a variety of platforms. Qt also runs on all major operating systems as well as a number of real-time operating systems and embedded operating systems. Digia’s CTO and Qt Project chief maintainer Lars Knoll recently explained the framework.

Download this article in .PDF format
This file type includes high resolution graphics and schematics.

Wong: Qt is used on PC projects like KDE. Can it be used in embedded applications?

Knoll: Absolutely. Qt has supported development for embedded Linux for almost 15 years now. Nowadays, Qt is supported on many embedded operating systems. Apart from Linux, there are versions supporting Windows Embedded, QNX, Integrity, and vxWorks. We are also working on a version to support device creation using Qt on an Android base layer.

Wong: What are the requirements for an embedded Qt environment?

Knoll: That depends a bit on the use case. Qt can run on devices with an ARM 9 processor and 64 Mbytes of RAM. To get a fully smooth user experience, a GPU supporting OpenGL ES 2.0 is a requirement. Qt does, for example, allow you to do smooth user interfaces in 1080p resolution on a Raspberry Pi with an ARM 11 processor and 256 Mbytes of RAM.

Wong: What programming languages and environments does Qt support?

Knoll: Qt applications are usually developed in C++. Our technology for creating smooth user interfaces called Qt Quick is using our own language called QML, which makes it extremely easy to describe the UI in a declarative fashion. In addition to this, we have a full JavaScript integration available that can be used for scripting, prototyping, and smaller tasks. The WebKit integration makes it possible to integrate HTML5 into your application. Bindings to other languages such as Python do also exist.

Wong: How do you design or describe Qt user interfaces?

Knoll: There are two ways to do user interfaces with Qt. The first and traditional one is by using the Qt Widgets module. User interfaces are implemented through C++ in this model, and they are mainly static. Creation of the user interfaces is supported by a WYSIWYG tool called Qt Designer. The other way to create user interfaces with Qt is through the Qt Quick technology. Qt Quick allows the creation of smoothly animated, touch-based user interfaces. It uses a declarative language called QML to make implementation of the user interface very easy and intuitive. All backend/application logic can still be implemented in C++. It allows UX designers to directly participate in the development of the application or device and test their designs on the real hardware.

Wong: What is QtScript?

Knoll: QtScript is a module in Qt that offers a full JavaScript engine that can be integrated into applications. The JavaScript engine can be used for many purposes, such as application scripting.

Wong: What is the relationship between Qt and HTML5?

Knoll: Qt has a module called Qt WebKit. Qt WebKit is using the WebKit project to offer an up to date implementation of the HTML5 standard. The module offers a C++ and Qt Quick API to integrate Web content into any application written with Qt. The API is flexible enough to implement a fully functional Web browser on top of it, but can also be used to very easily embed some HTML code into Qt. Qt WebKit together with many of the other parts of Qt (such as our network stack, the XML support or the JSON support) makes it very easy to integrate Web services into your application.

Download this article in .PDF format
This file type includes high resolution graphics and schematics.
About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!