Qt


  • In Part 1 of our series on CMake, an open-source, cross-platform family of tools designed to build, test and package software, I provided an overview and showed you how to build a basic CMake project. In today’s Part 2, I’ll show you how to find libraries and link them to your application. When…

    Blog
  • Qt 6.5.0 is hot off the presses! Here's a look at what is new and significant in this release, from a new tool to create shader effects for Qt Quick to Qt QML Core, a new module that exposes Qt Core APIs to QML.  Qt Release History The Qt 6.5 release effort started around November of 2022 with a…

    Blog
  • Starting with version 8.0.0 the Qt Creator IDE has a useful new plugin that allows you to browse and clone projects from a GitLab server. While easy to use, it is not well documented, so I thought I would write a blog post that describes how to configure and use it. Requirements You will need Qt…

    Blog
  • The Qt Speech module was introduced in Qt 5.8.0. I made a blog post at that time (June 2017), looking at how it provided cross-platform support for text-to-speech. With the Qt 6.0.0 release, Qt Speech was one of the modules that were no longer available. In the upcoming Qt 6.4.0 release, it is…

    Blog
  • Qt developers are a passionate bunch. They love to talk about new features, new versions. How cool is this and what needs to be done with that. And it all makes sense. New features and new versions are, eh, new and exciting.  The essential part of Qt though is taken for granted. Most of the time,…

    Blog
  • The Book C++ GUI Programming with Qt 4 by Jasmin Blanchette and Mark Summerfield was the definitive book on Qt back when it was published in 2006. It was an update to the earlier C++ GUI Programming with Qt 3 by the same authors that came out in 2004. The book contains many Qt example programs,…

    Blog
  • Part of my job is to prepare Yocto setups for our customers' devices. My goal is twofold: set up an environment a client can easily reproduce; and ensure this environment also allows developers to have multiple projects at the same time. In this blog post I explore the workflow I use in order to…

    Blog
  • As The Qt Company has shifted its focus from qmake to cmake, it is time to revisit a previous blog post on the Qt Installer Framework. The post presented a small qmake example in which the generation of an application's installer was part of its build. Today, I'll illustrate how to do the same…

    Blog
  • This blog, which originally described how to build Qt 6.2.0 (the latest release at the time it was written), has been fully updated to cover the Qt 6.4.0 release. Qt 6.2.0 was the first release of the Qt 6 series to reach feature parity with Qt 5, and was therefore the first release that was…

    Blog
  • Concluding our series on microcontrollers (MCU), I want to turn your attention to NXP hardware as NXP’s I.Mx RT series of MCUs are a popular hardware for low-cost embedded GUI projects. With The Qt Company, a major player in GUI frameworks, demos are not bundled. For this reason, I’ve created this…

    Blog
  • Choosing the right GUI framework for your microcontroller (MCU) target can be a make it or break it decision for achieving your product goals. Your GUI framework needs to be able to produce a great-looking UI. But, it can’t take all the resources needed for the product to be functional. We’ve put…

    Blog
  • For years C and C++ have been the dominant system programming languages, especially for high-performance and embedded applications. While I don't think that will change any time soon, there is an interesting alternative that has been increasingly growing in popularity: Rust. Let's take a look at…

    Blog
  • Microcontrollers are transforming consumer goods, industrial automation, infrastructure and more — essentially reshaping how we interact with the world around us. Exciting stuff! Let me share with you some of the capabilities of Qt for MCUs, as well as offer an at-a-Glance reference. It’s a…

    Blog
  • The latest release of Qt, version 6.0, arrived not only with API cleanups but also improvements in performance. The binding engine was brought into the C++ side of the Qt API, allowing C++ developers to take advantage of the powers of binding. This not only enhances performance, but also code…

    Blog
  • Unit testing is becoming an essential part of the software implementation process. Test-driven Development (TDD), for instance, mandates that before a requirement is even implemented a corresponding test case must be written. In the context of Graphic User Interfaces (GUI), developers are often…

    Blog
  • Update: Qt 6.0.0 has arrived! Read the announcement from The Qt Company's Lars Knoll and then check out our blog below for more details on the new release and migrating to Qt 6. Later this year will see the release of Qt 6.0.0, the first new major release since Qt 5.0.0 was announced almost…

    Blog
  • *Image courtesy of KDE.org I had the opportunity to attend Akademy 2020, KDE’s annual world summit — a free, non-commercial event organized by the KDE community. In case you’re not familiar with KDE, it’s an international team cooperating on development and distribution of free, open source…

    Blog
  • This ongoing series provides a close-up look at our work helping two non-profit organizations, RespiraWorks and Project RED, create low-cost ventilators to fight COVID-19 in countries with developing economies. Progress reports will be posted regularly. June 4, 2020 No one…

    Blog
  • One of the most effective software engineering approaches involves separating the user interface (UI) or frontend from the business logic or backend, especially when it comes to developing embedded devices. This practice makes it far easier to code for a single specific functionality versus coding…

    Blog
  • One of the most frequent comments we get after we introduce our new GreenHouse by ICS solution to a customer is “this sounds a lot like Qt Design Studio.” And it’s no wonder. At ICS, we often talk about integrating user experience (UX) designers into the device development process in a way that…

    Blog
  • The QFile class in Qt 5.15.0 provides an API that supports moving files to the trash in a portable way. It works on Windows, macOS, and on Linux desktop platforms that support the freedesktop.org specification. Two new methods are provided: bool QFile::moveToTrash() moves the file associated with…

    Blog
  • Building a new device challenges the skills of a software engineering team to the extreme. Although code reuse has been the motto of software development for years, in reality very little code is re-used (aside from personal “tricks”). In fact, most code isn’t written to facilitate reuse because of…

    Blog
  • You just shipped your impressive new product, built on the latest System on a Chip (SOC) from XYZ Microsystems. You chose this SOC because it decreased your parts count and reduced your manufacturing bill of materials. And with its fast CPU, this SOC powers your product to process four times as…

    Blog
  • Successful touch devices appear deceptively simple to the user. In reality, they are highly complex and challenging to build because they require so many different skills. Each device requires custom hardware, touchscreen, operating system and web connectivity, as well as  custom software. Getting…

    Blog
  • Qt 5.14 introduced a new class, QCalendar, which provides some useful functionality for localization of dates. An instance of a QCalendar object maps a year, month and day number to a specific day using the rules of a particular calendar system. The supported calendar systems (as of Qt 5.14.1) are…

    Blog
  • In the world of Qt, the QTimeline object is intended to help control animations. It is an object that acts somewhat like a timer: it has a duration and an interface for start/stop/resume functions. But a QTimeline object does more. It has a value that changes from beginning to end and has an update…

    Blog
  • Large files — I’m talking really large, say 8 gb — can be frustrating to download. How much fun it is to stare at the spinner icon or progress bar for more than a few seconds, let alone hours? When we first came up with an interactive storytelling tool called ViewPoint we butted up against this…

    Blog
  • */ I just got back from a very successful Qt World Summit 2019 in Berlin. This year marked a much-appreciated return to the traditional two-day conference schedule (with a third, optional training day). Last year's shows in Boston and Berlin had a compressed format with only one day for the…

    Blog
  • In the final installment in our QML Controls from Scratch series, this time we will implement an English-only Keyboard. There are typically three ways to display a virtual keyboard in a QML app: 1. Qt Virtual Keyboard 2. Use the keyboard that ships with the operating system (e.g. on Windows 10…

    Blog
  • In this installment of our QML Controls from Scratch series we'll implement a ProgressBar, which is often used to indicate the progress of a long-running operation from 0 to 100%. ProgressBar is a read-only control so it's pretty simple, save for the math required to compute its width.…

    Blog
  • The market for embedded software development is one of the fastest growing areas of computing. But as the market grows, so too does the complexity of the devices. At a time when manufacturers are demanding more sophisticated "iPhone like" user interfaces and greater product functionality, today’s…

    Blog
  • Continuing our QML Controls from Scratch series, this time we will implement a BarChart. Many people who need charts in their application wonder if they need a charting library, but it turns out to be not that difficult to write a custom autoscaled chart. The public interface consists of a title…

    Blog
  • QML provides a powerful and flexible framework for developing user interfaces (UI). The basic elements provided are low level, so you typically need to build up the components of your UI into widget-like controls. Creating a set of common QML controls can greatly reduce the overall development…

    Blog
  • Continuing our QML Controls from Scratch series, this time we will implement a DatePicker, which allows the user to select any calendar date (year, month, day). DatePicker's public interface consists of a set() function and a clicked() signal. A function set() is used instead of a property since…

    Blog
  • Continuing our QML Controls from Scratch series, this time we implement a TimePicker, which allows the user to select a time in terms of hours, minutes and am/pm. TimePicker's public interface consists of a set() function, a clicked() signal, and an interval property (to specify the granularity…

    Blog
  • Continuing our QML Controls from Scratch series, this time we will implement a Table (i.e. a two-dimensional matrix of strings supporting an arbitrary number of rows and columns). The Table consists of two main parts: header and data. Consequently, it has two public properties (headerModel and…

    Blog
  • Continuing our QML Controls from Scratch series, this time we will implement Tabs. They are used to expand limited screen real estate by providing two or more "tabs" that divide the user interface into screens (content), only one of which is shown at a time. The Tabs control only renders the tabs…

    Blog
  • Continuing our QML Controls from Scratch series, this time we implement PageDots. They are often used in conjunction with ListView.SnapOneItem to indicate what "page" is currently shown. The public properties are page and pages to indicate the current page and total number of pages respectively…

    Blog
  • */ Continuing our QML Controls from Scratch series, this time we will implement a Dialog that supports an arbitrary number of Buttons (and we reuse our Button control). Its public API includes the text to show, an array of strings for the buttons, and a clicked() signal that provides the index…

    Blog
  • 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. …

    Blog
  • 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…

    Blog
  • This blog is part of a continuing series on GPIO programming. If you missed earlier installments, find them here. In this post we'll look at a representative embedded board, one that we use for our embedded training classes and that we have used on a number of customer projects. Toradex [1] is a…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • Editor's note: This 2019 blog series, among ICS' most popular,  has been updated (December 2022) to ensure the content is still accurate, relevant and useful.   This blog launches Integrated Computer Solutions' (ICS) new series on GPIO programming. GPIO, or General-Purpose…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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.…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • Media, Navigation and Voice Chrome Apps Showcased on Automotive Grade Linux at CES 2019  WALTHAM, MA; ESPOO, FINLAND — January 8, 2019 — Integrated Computer Solutions (ICS), creators of embedded, touch and voice-enabled devices, today announced that it has created three Automotive Grade Linux (…

    Basic page
  • Are you up to date with the latest C++14 and C++17 language features? Are you writing "modern C++"? Do you follow current best practices for C++? Are you avoiding deprecated language features and outdated programming practices? C++ has evolved significantly in the last few years with the…

    Blog
  • As 2018 draws to a close, it's time to take the pulse of the Qt ecosystem and review some of the significant events and milestones of this year. Qt Releases The Qt project continued with its practice of releasing two major versions per year, as well as a number of maintenance releases. First…

    Blog
  • You have probably used the QTimer class for basic timing operations in Qt. Common use cases include polling for events (not always a good approach, but sometimes necessary), updating the user interface or performing some other function at regular intervals. And you probably know about the…

    Blog
  • I just got back from Qt World Summit 2018, held at The Westin Boston Waterfront Hotel. The sold-out show drew more than 450 people. This was the first time the North American show was held on the East Coast since 2003. For Integrated Computer Solutions (ICS) the…

    Blog
  • If you've used Qt to develop widget-based applications, you almost certainly used Qt Designer to lay out screens or dialogs and then used the Qt User Interface Compiler (uic) program to generate the C++ code for the user interfaces. You may not be aware of another approach supported by Qt: …

    Blog
  • In this blog post we'll look at a little-known feature of Qt that can make your applications more user friendly: the QCompleter class. QCompleter provides completions for user entry, based on an item model. It is supported by the QLineEdit and QComboBox widgets. When a user enters text, the…

    Blog
  • ICS is joining The Qt Company in Dallas, TX (September 20) for a Meet Qt seminar. Connect with fellow Qt users and hear ICS' Roland Krause discuss and show the integration of Amazon Alexa into Qt  on our IVI media manager and cockpit control system. Attendance is free,…

    Basic page
  • Earlier this year, The Qt Company announced that Python would be officially supported in Qt via the Qt For Python (formerly PySide2) Python bindings and tooling. In June 2018, the first technical preview was offered, built against the Qt 5.11 release. I have some experience with Python, including…

    Blog
  • ICS is a gold sponsor and training partner at the upcoming Qt World Summit in Boston, where leading technology innovators, industry experts, startups and device creators will share their insight on the future of cross-platform application developent. The Westin Boston Waterfront 29 October 2018 −…

    Basic page
  • In this blog post, part of a series on Qt basics, I'd like to explore Qt's support for input masks and validators. In this first part we'll look at the support from widgets. In a future installment we will see how these features are supported from QML. Overview A general principle of good UX…

    Blog
  • 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:…

    Blog
  • As a developer, you're probably familiar with the concept of Design Patterns [1], but you may not have heard of the term anti-pattern. First coined by Andrew Koenig, the term anti-pattern or AntiPattern [2] refers to a commonly used programming practice that has proven to be ineffective,…

    Blog
  • 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…

    Blog
  • As a follow-up to my blog post on Qt Books, here are some other great resources for learning Qt. Different people learn in different ways and at different paces. The various training resources I've listed here should accommodate you whether you're looking for an intensive week of…

    Blog
  • Qt has always been renowned for its excellent developer documentation that includes API reference information as well as tutorials and examples. But some people prefer documentation in book format, whether it be an e-book or a traditional printed paper volume. Books offer a different style of…

    Blog
  • 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…

    Blog
  • Computer software sometimes has a requirement for generating random numbers. Applications include games, simulations, cryptocurrency, and security software. Generating true random numbers is surprisingly difficult, and many applications use a series of pseudorandom numbers, sometimes seeded with an…

    Blog
  • In this final installment of our Qt Developer's Bag of Tricks series, I'll look at some helpful tools that didn't fit into any of the categories covered previously. GammaRay GammaRay (1) is a tool for examining and manipulating the internals of Qt applications at run time. Unlike…

    Blog
  • While you can develop software using just a text editor and the command line (and many people do), you'll often see productivity gains by using a graphical integrated development environment (IDE). Here are a few options for IDEs that are suitable for Qt development. Qt Creator The "official"…

    Blog
  • Various tools that can be lumped together under the category of simulators and emulators can be useful during development, especially for embedded systems. A number of products use virtualization to run one operating system on top of another one. This allows you to run Linux on top of Windows, for…

    Blog
  • As 2017 draws to a close, I'd like to take a look back at some of the significant events of the past year that are relevant to the Qt framework and the ecosystem around it. Qt Releases The Qt Project continued to follow the process of generating two minor releases per year. Qt 5.9.0 was…

    Blog
  • In the past, embedded systems often ran very small operating systems with no filesystem, or even ran on the "bare metal." With the increasing power and lower cost of hardware, including SOCs (Systems on a Chip), many embedded systems are moving to a full operating system, often based on Linux…

    Blog
  • Static Analysis (1), or more correctly, Static Program Analysis, is a method of analysis of computer software that is performed by examining source code without actually executing it. It is typically performed by automated tools. Static analysis is increasingly used in the development of…

    Blog
  • Memory and resource leaks are the stuff of nightmares for programmers. If a program doesn't properly free memory or other resources, it may appear to run correctly, but randomly crash or misbehave after working normally for hours or days. All too often, the problem is only discovered just before…

    Blog
  • 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…

    Blog
  • An interesting feature coming in Qt 5.10 is a new Qt back end that uses WebGL for rendering. It allows Qt applications (with some limitations) to run in a web browser that supports WebGL.  What Is it? The new back end uses WebGL, which stands for Web Graphics Library. WebGL is a JavaScript…

    Blog
  • Continuing our Qt Developer's Bag of Tricks series, this time I'll give you an overview of some applications that come under the general category of tracing. (I'll also include some test coverage tools here too since they don't fit in any other categories in this blog series.) Tracing is…

    Blog
  • Migrating from Photon to Qt from ICS    

    Basic page
  • Developers often have a desire to speed up their code to make it run more quickly. Some well-known advice on this topic, attributed to the programmer Michael A. Jackson, says: Rules of Optimization: Rule 1: Don't do it. Rule 2: (for experts only) - Don't do it yet. Sometimes a third rule is added…

    Blog
  • Experienced software developers tend to build up a set of tools that they find indispensable for development, testing and debugging. But if you ask a group of developers what their "go to" tools are for various tasks, it is surprising how different the answers can be. I've also found that many…

    Blog
  • Best Practices in Qt Quick/QML - Part 3 from ICS  

    Basic page
  • Since my last update there have been some new happenings in the Raspberry Pi community. Here's a look at a few of the most significant events. Raspberry Pi Zero W [Photo credit: raspberrypi-spy.co.uk] In late February 2017 the newest Raspberry Pi model was announced: the…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • In this post we'll take a look at one of the newer Qt modules: Qt Speech. What Is Qt Speech? Qt Speech is a module providing cross-platform support for text to speech. It supports text to real-time speech output. Common use cases for text to speech include enabling software for visually impaired…

    Blog
  • 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…

    Blog
  • In previous blog posts I've covered how to configure Qt Creator for development on Linux (1), Windows (2) and MacOS (3) desktop systems and for embedded development on the Raspberry Pi (4). We're often asked in our training classes and consulting projects how to set up the Qt Creator IDE for…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • Two earlier blog posts (1) (2) covered how to set up Qt and Qt Creator on Windows and Linux systems. Let's look at installation on the remaining major desktop platform, macOS. Thanks to the unified Qt installer, the process is very similar to that on Windows and Linux, so we'll just cover some of…

    Blog
  • In an earlier blog post (1) I described how to create a widget with a Qt Designer plugin interface so it can be viewed within Qt Designer. With the increased interest in using Qt from the Python programming language, I asked one of our developers to reproduce the same example, but implement the…

    Blog
  • Happy New Year! In previous blogs I have covered installing Qt and Qt Creator on Windows and on Linux using the Qt installer and pre-built binaries. In this post, aimed at developers with novice-level Qt skills, we'll look at how you can build Qt yourself from source code. Rationale Why would…

    Blog
  • As 2016 draws to a close, I'd like to take a look back at some of the significant events of the past year that are relevant to the Qt framework and the ecosystem around it. Qt Releases Starting in 2016, Qt 4 was officially at end-of-life status and no longer supported. The last release was Qt 4.8…

    Blog
  • January 5, 2017 ICS is excited to be a silver sponsor and join other automotive stakeholders from all over the world at the GENIVI Demonstration Showcase at the Consumer Electronics Show (CES) this January. GENIVI has a long and successful history at CES and the 2016 edition is expected to be…

    Basic page
  • In part one of this blog series, I gave an overview and described the hardware setup for an IoT example application that uses a Qt-based desktop program and an Arduino with XBee wireless modules. In part two, we'll cover the software configuration and programming. Configuring and Programming the …

    Blog
  • In this two-part series, we'll look at an interesting Internet of Things (IoT) application that uses an Arduino controller and two XBee wireless modules in conjunction with a Qt-based application. Part 1 provides an overview, demonstrates communication between two applications using the XBee, and…

    Blog
  • I've just returned from the Qt World Summit conference and wanted to share a brief report on some of the highlights of the show. Held from October 18-20, 2016, this was the 13th annual Qt developer conference and the second under the banner of the Qt World Summit.  This year the summit was held at…

    Blog
  • My recent blog post covered how to set up Qt and Qt Creator on a Windows 10 system. In this post I'll look at how to configure a Linux system for Qt desktop development. Since the set up process on Linux is almost identical to that on Windows, rather than repeat the information I refer you to that…

    Blog
  • Feedback from our recent Qt for Beginners webinar series indicated a need for some basic tutorials for beginners. If you struggle with initially getting Qt set up for development with the Qt Creator IDE and a C++ compiler, this post is for you.  I'll walk you step by step through the…

    Blog
  • Educate Your Team on the Best Practices of Using Squish in Your Environment Accelerate The Use of Squish Within Your QA Team Jumpstart for Squish® is a 5-day service engagement that includes formal training, installation, infrastructure development and test creation by ICS experts. You should…

    Basic page
  • 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…

    Blog
  • ICS invites you to visit our new headquarters in Waltham for dinner, drinks, and an evening of What's New in Qt! Justin Noel, Senior Consulting Engineer, will be there to talk about all things Qt and there will be plenty of time for demos, questions, networking and fun! If you have…

    Basic page
  • Intel® RealSense™ technology allows developers to create the next generation of natural, immersive and intuitive applications—including hand and finger tracking, facial analysis, speech recognition, augmented reality and 3D scanning. Traditionally applied to tablets and laptops, RealSense is being…

    Basic page
  • While much attention has been focused on the built-in WiFi hardware, the Raspberry Pi 3 (1) also ships with on-board support for Bluetooth. Bluetooth is a wireless technology for exchanging data over short distances using 2.4 GHz radio signals. When running the recommended Raspbian Linux…

    Blog
  • Qt World Summit October 18 - 20, 2016 The Embarcadero San Francisco​, California ICS will be a platinum sponsor at the Qt World Summit, which is returning to San Francisco for its 13th occurrence. Leading technology innovators, industry experts, startups and device creators will share their…

    Basic page
  • Qt Gamepad is a Qt module that supports the use of gamepad hardware. Gamepad is the term used to refer to input devices with buttons, directional controls (which may be digital joypads or analog joysticks), and sometimes keys for keyboard input. Used on video game consoles, they are also available…

    Blog
  • Read how ICS leveraged Qt Quick to quickly create this highly stylized user interface Download / View PDF . Watch Justin Noel's presentation from MWC — Barcelona for technical details on how the app was built. Part 1 and Part 2.

    Basic page
  • While it is not the only option, Qt Creator is the integrated development environment (IDE) of choice for Qt. It provides good support for developing for embedded systems, including cross-compiling, deploying to a target system, debugging and profiling. It's free, well documented (1), and actively…

    Blog
  • Yocto(1) is a software framework for embedded Linux systems. We've looked at it in previous blog posts(2). It forms the basis of many embedded Linux distributions, including The Qt Company's boot2qt that is part of their commercial product Qt For Device Creation(3).Knowledge of Yocto is a very…

    Blog
  • Thank you for submitting your question or content idea. One of our engineers will be reviewing your input. We are always looking for ways of improving our website content for out users.    

    Basic page
  • In this, the final installment of the blog series on Python, we'll look at modules and how object-oriented programming is supported. We'll take a brief look at two of the popular bindings for Qt from Python: PyQt and PySide. I'll wrap things up with some tips for effective programming and…

    Blog
  • 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…

    Blog
  • Qt for beginners part 5 ask the experts from ICS

    Basic page
  • Thank you for registering for Qt for Beginners Part 5 - Ask the Experts - On-Demand Video. An email with a link to the on-demand video will be emailed to you. You can also access the video now by clicking here.

    Basic page
  • Click on the links below to watch the videos. Qt for Beginners Part 1 - Overview and Key Concepts - On-Demand Video Qt for Beginners Part 2 - Widgets - On-Demand Video Qt for Beginners Part 3 - QML and Qt Quick - On-Demand Video Qt for Beginners Part 4 - Doing More - On-Demand Video Qt for…

    Basic page
  • Educate Your Team on the Best Practices of Using Squish in Your Environment Accelerate The Use of Squish Within Your QA Team Jumpstart for Squish® is a 5-day service engagement that includes formal training, installation, infrastructure development and test creation by ICS experts. You should…

    Basic page
  • Qt Quick (QML) provides user experience (UX) designers and Qt developers the ability to collaborate and create rich, intuitive and compelling user interfaces for applications – quickly. QML is a collection of technologies that can build modern and fluid interfaces for mobile phones, tablets,…

    Basic page
  • ICS has published 18+ Qt and QML clients for popular Google APIs, making it easy to integrate the functionality your users want into your Qt/QML applications. Whether you need to add access to Google tasks, maps, shopping, calendars or more, we have clients built and ready to plug into your…

    Basic page
  • 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…

    Blog
  • Thank you for registering for Qt for Beginners Part 4 - Doing More - On-Demand Video An email with a link to the on-demand video will be emailed to you. You can also access the video now by clicking here.

    Basic page
  • DownloadManager.tar - this is an example program used for education purposes only.  Qt for beginners part 4 doing more from ICS

    Basic page
  • Meet Qt May 5.7 2016 - PDFQt Seminar Half Day - PDF

    Basic page
  • Qt programmers traditionally program in the C++ language. It offers a number of benefits, including performance, the ability to do systems programming and to scale from small to very large systems. But the language is quite complex. My copy of the book The C++ Programming Language, 4th edition…

    Blog
  • Qt for Beginners Part 3 - QML and Qt Quick from ICSNetwork on Vimeo. Qt for beginners part 3 qml and qt quick from ICS

    Basic page
  • It has been just over four months since my last blog post on the Raspberry Pi (1). Since then, the project has continued to move forward and I thought it was appropriate to write a new update. The Raspberry Pi 3 Raspberry Pi 3 (image credit: Tech Radar) In my last blog post I covered the…

    Blog
  • 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…

    Blog
  • Qt for beginners part 2 widgets from ICS   Read the Questions and Answers here.

    Basic page
  • Watch the video now. A link to the On-Demand video will aso be emailed to you.  

    Basic page
  • Media Manager Architecture - From Indexing Media to Playing In the first two parts of our blog series, we examined some of the functional requirements of our Media Manager. We also showed a solution for indexing of media. In today’s installment, we explain the core architecture of the media…

    Blog
  • Download the entire webinar series. What is Qt's take on T2S applications? Assuming this refers to TARGET2-Securities, the European securities settlement engine, I don't know of anything relevant in Qt except possibly the Qt Purchasing API which supports In-App Purchases, but could potentially…

    Blog
  • The preferred programming language for developing on Apple platforms has been Objective-C (1), going back to the 1990s when Apple acquired the NeXTSTEP operating system from which OS X is derived. Like C++, Objective-C adds object-oriented programming support to the C programming language. In 2014…

    Blog
  • Thank you for taking the time to participate in this survey.  For the latest updates on Qt World Summit, visit www.qtworldsummit.com.  We hope to see you in San Francisco!

    Basic page
  • Watch the On Demand Video - Qt for Beginners Part 1 - Overview and Key Concepts

    Basic page
  • Part 1: Qt for beginners part 1 overview and key concepts from ICS   Part 2: Qt for beginners part 2 widgets from ICS   Part 3: Qt for Beginners Part 3 - QML and Qt Quick from ICSNetwork on Vimeo. Qt for beginners part 3 qml and qt quick from ICS   Part 4…

    Basic page
  • Welcome back! Last time we talked about texturing, lighting and geometry in regards to porting fixed function OpenGL to Modern OpenGL and while it covered the basic features in OpenGL programs, it left out a lot of advanced techniques that your fixed-function code may have used.  In…

    Blog
  • It is often desirable to log events from an application, like errors or debug information, to a log file or even to a different computer. A new feature of Qt in version 5.6.0 is the ability to direct the output of the commonly used Qt message logging functions to the standard syslog and…

    Blog
  • Part 2 Indexing and Tagging Media This is the second in a series of blog posts about media manager components. In the first blog post we discussed the goals and a general architecture for our media manager. In today’s installation, we will show how to address some of the challenges when …

    Blog
  • At ICS we’ve designed and built numerous In-Vehicle-Infotainment (IVI) systems for passenger automobiles, inflight entertainment (IFE) systems for major International airlines, and related control systems for commercial and agricultural vehicles, forklifts, etc. (See the “From Zero to Amazing”…

    Blog
  • This is the second and final installment of my blog series on Qt and the Internet of Things, based on a presentation (1) I gave at the Qt World Summit 2015 entitled The Internet of Things: What Is It and Why Should I Care? In the first blog post I discussed what IoT was, covered some terminology…

    Blog
  • Disclaimer: Example code is intended only to express concepts and design patterns, and as such should not be used in a production environment. View the Slides  Example Code - GoogleTestWithQtLab.zip

    Basic page
  • The code referenced in this blog is available here. Texturing Texture setup in modern OpenGL is nearly equivalent to what you are used to in the fixed-function API.  You still have to enable your texture units, create and configure your texture objects (including mipmap chains), upload…

    Blog
  • The code referenced in this blog is available here. In our last blog, we re-implemented the famous OpenGL triangle in world space and compared and contrasted the fixed-function GLUT program with an equivalent Modern OpenGL program.  We covered how to use Qt's math functions to…

    Blog
  • The code referenced in this blog is available here. This is the second of a four part blog series, in which we compare and contrast Fixed-Function OpenGL with Modern OpenGL and introduce you to the issues involved in porting your code to Modern OpenGL. Last time we covered the necessary steps you…

    Blog
  • The code referenced in this blog is available here. In this first of a four part blog series, we outline differences between Fixed-Function OpenGL with Modern OpenGL and show effective solutions for common issues encountered when porting your code to Modern OpenGL. I was once faced with the task…

    Blog
  • QtSerialBus is a new Qt module, introduced as a technical preview in Qt 5.6.0. It supports two serial interface protocols that are commonly used on embedded systems: CAN bus and Modbus. In this blog post we'll take a brief look at this new module and what it provides. What is CAN bus? CAN bus (1…

    Blog
  • As a developer, there are a number of useful tools that you always want to have in your arsenal for testing and debugging. This includes debuggers, memory checkers and performance profilers. In this blog post I would like to present some information about a profiler tool that I feel deserves more…

    Blog
  • Gartner, Inc. forecast last year that 4.9 billion connected devices would be in use in 2015, up 30 percent from 2014, and the number will reach 25 billion by 2020. They describe the Internet of Things (IoT) as "a powerful force for business transformation, and its disruptive impact will be felt…

    Blog
  • Some Qt licensing changes were recently announced (1) by The Qt Company. Software licensing can be a complex and confusing issue, and I've already seen some misunderstandings on the mailing lists and forums. Therefore, I thought it would be timely to give some of my thoughts on the changes and what…

    Blog
  • Qt Test Unit Testing Framework from ICSNetwork on Vimeo.

    Basic page
  • While I missed the recent 2015 Qt World Summit, I have been to and presented at Qt Dev Days for the previous three years running.  Each year, I presented two topics.  The first was related to a recent project or piece of software that we had been working on, including such fun items as an…

    Blog
  • Looking for a New Year's resolution for 2016? Official support for Qt version 4 came to an end in December 2015. Qt version 5 first came out in 2013 and is currently at version 5.5.1, with the 5.6.0 release coming early this year. Qt 5.6.0 will be the first LTS (Long Term Support) release, with a…

    Blog
  • My last blog post on the Raspberry Pi was written last April, when I covered the release of the Raspberry Pi 2. Since then, a number of things have happened in the Raspberry Pi ecosystem and I thought it was an appropriate time for another update. Here is a list of some of the events that, in…

    Blog
  • Download the Qml-Runtime-Reload ZIP file Disclaimer: Example code is intended only to express concepts and design patterns, and as such should not be used in a production environment.

    Basic page
  • Download the Source code here.

    Basic page
  • The Qt 5.6.0 release, coming in early 2016, includes a number of new modules and classes. I plan to cover a number of these in a series of blog posts. In this first post, we'll start with one of the simpler classes in Qt 5.6.0: QVersionNumber. Basics Part of the Qt core, it provides a…

    Blog
  • In this blog post, we'll continue the series on Qt Tips and Tricks. This time I'll present some general advice on working with Qt, based on the experience of ICS developers. Bug Tracker If you are having a problem with Qt, the Qt Bug Tracker (1) is a useful resource to check for known bugs…

    Blog
  • Basic page
  • In this blog post, I'll present a few tips and tricks for using Qt of which you may not be aware. These are small topics that I didn't feel justified an entire blog post of their own and were collected by polling the ICS Qt consulting team. Qt Extras There are platform-specific features available…

    Blog
  • Inspired by Halloween, I'd like to present a list of ten "scary" mistakes using Qt. Based on the wide experience of ICS with Qt consulting projects, I have provided a list of errors that can doom any project. 1. Waiting too long to test on hardware One of Qt's strengths is its…

    Blog
  • I recently returned from the Qt World Summit conference and wanted to share a brief report on some of the highlights of the show. As in previous years, the event was held in Berlin, Germany and was in the same venue as last year, the Berlin Congress Center. It is conveniently located close to the…

    Blog
  • Sometimes an application needs to use different assets, such as graphics images or QML files, depending on the platform that the application is running on. One way to do this is with conditional code at compile time using the C++ pre-processor (i.e. #ifdefs). It can also be done with conditional…

    Blog
  • ICS is excited to be a Platinum Sponsor at the Qt World Summit, the global event for all things Qt. Whether you are a technology director, business decision maker, tech strategist, product manager, engineer or developer there is something here for you. While there check out our booth and…

    Basic page
  • In this blog post, we'll take a brief look at one of the newest Qt modules, Qt3D, which was introduced in Qt 5.5.0. What is Qt3D? Qt3D is a new Qt module that provides support for 2D and 3D rendering. It also provides a generic framework for supporting simulations that go beyond just rendering,…

    Blog
  • In Part 1 of this series we looked at some of the programming languages other than C++ that could be used with the Qt framework. Let's continue our discussion, looking at some more languages. OCaml Caml is a dialect of the ML programming language family. OCaml, originally known as Objective…

    Blog
  • By Jeff Tranter  Most Qt developers use C++ (the language that Qt is written in), often in association with QML. There are however, other programming languages that can be used with Qt. In this blog post, we'll look at some of the alternative language options. Rationale You may wonder…

    Blog
  • This blog post presents a short example program that illustrates how to use OpenGL and Qt in a scene graph. The two main goals are to show how the scene graph can be used, and more importantly, how to incorporate your own OpenGL code as part of the scene graph (as opposed to overlaying them). The…

    Blog
  • Basic page
  • Basic page
  • Basic page
  • In this blog post, the last in the series, I'll cover the remaining Qt command line tools as there are only a few programs we have not already discussed. xmlpatterns and xmlpatternsvalidator These two XML-related tools are for working with Qt's XQuery support. XQuery is a query and functional…

    Blog
  • In the next installment of this blog series on the lesser-known Qt commands, we'll look at the QML-related tools that come with Qt 5. qml This program is the so-called QML tooling, which allows running QML files directly like a script, much like UNIX shell scripts or Python programs. I've covered…

    Blog
  • In this next installment of our blog series on lesser-known Qt commands, we'll look at four tools related to documentation: qdoc, qhelpgenerator, qcollectiongenerator and qhelpconverter. Qdoc Qdoc1 is the tool used to generate the developer documentation for the Qt Project.…

    Blog
  • In this post, we'll look at Boost::Log, a facility of the Boost C++ libraries that makes it easy to add logging to applications. QMessageLogger 1 was introduced in Qt 5.0 as a means of providing a framework for logging application messages. While QMessageLogger is useful as a lightweight…

    Blog
  • In this blog post, we will show an example of how to support dynamic language selection in an application using Qt. By "dynamic", I mean that the application can change the displayed language from within the application at run-time, rather than picking it up from the locale once on startup. Text…

    Blog
  • According to the book C++ GUI Programming with Qt 4 (1), the first public version of Qt was uploaded to the ftp site sunsite.unc.edu on May 20, 1995. This was the first public release of Qt and was identified as version 0.90. It was announced six days later on the comp.os.linux.announce Usenet…

    Blog
  • Thank you for submitting a quotation request. Someone at ICS will be in touch with you shortly to discuss your needs. Go back to the form Configure

    Basic page
  • The Raspberry Pi 2 computer, released in February 2015, is the latest generation of Raspberry Pi hardware. It is a significantly faster machine than the original Raspberry Pi, with a new Broadcom BCM2836 system on a chip that has a quad-core ARM Cortex A7 CPU running at 900 MHz. The GPU is a…

    Blog
  • Intel® In-Vehicle Solutions Proof of Concept - ICS High Level Design Document  Connected Technology Demand for connected devices in automobiles is accelerating as mobile ecosystems are maturing. The ability for automakers to differentiate in an increasingly competitive environment…

    Blog
  • Continuing with our series of blog posts on some of the lesser known Qt commands, this time we will look at some tools related to Qt and D-Bus. D-Bus (1) is an inter-process communication (IPC) system that allows multiple concurrently running computer programs to communicate. It…

    Blog
  • Thank you for your request. Please check your email for the downloadable PDFs.

    Basic page
  • I am a strong proponent of quick references or "cheat sheets" as an aid for recalling often-used information. In my career, I have created many work-related reference cards for colleagues and for my own personal use as well as for hobbies such as electronics and retro computing…

    Blog
  • ICS and The Qt Company are hosting a Qt Roadshow across North America where key players in the industry will collaborate with technology managers & developers on innovations that change how developers and consumers experience a phenomenal UI/UX and uncompromised performance…

    Basic page
  • Over many years of developing software and building user interfaces, I’ve seen numerous shifts in technology and been present for multiple evolutions in the way developers craft quality software. Yet, while the development tools and languages available to developers make them increasingly capable,…

    Blog
  • Thank you for your time and interest in ICS. Based on your inquiry, we will have the correct person respond directly to you as soon as possible. In the meantime, check out our ICS Insight blog or our Portfolio for some samples of our recent work.

    Basic page
  • Every Qt developer should be familiar with the common tools like qmake, Qt Designer and Assistant, but looking in your Qt installation's bin directory will reveal a few more programs there. In this and future blogs, we'll look at some of the lesser known Qt development tools. First, let's…

    Blog
  • Software development in general follows a particular flow. This article describes the software development process for medical device products and some of the notable differences within. Some examples of medical device products include everything from user interface design for image guided surgical…

    Blog
  • Thank you, your submission has been received. You will receive an email confirmation.

    Basic page
  • A previous blog post (1) described how we've been using Google Analytics at ICS to collect usage information for a Kiosk application. In this second blog post, I'll present more technical information about how to use Google Analytics from C++ code and how Qt makes this very easy to implement.…

    Blog
  • There is often a desire of some companies to monitor usage of specific software applications to improve business over time. Reports and dashboards that provide visual representations of usage data can be used to inform product development, establish product value and influence business strategy.…

    Blog
  • As the year draws to a close, I thought it would be good to take a look back at some of the major events of the Qt world in 2014. Qt is now on a regular schedule of two major releases per year. We saw Qt 5.3.0 (1) come out in May and Qt 5.4.0 (2) in December. More minor releases occur, as needed,…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • ICS Helps Ivenix Combine State of the Art Information Technology and Simplicity with an Adaptive Fluid Delivery System One of the biggest challenges in the development of medical device technology is safety. The medical device industry is beset with complex manufacturing, market and regulatory…

    Basic page
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • 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…

    Blog
  • We've just returned from the Qt Developer Days San Francisco conference last week and I wanted to share a brief report on some of the highlights of the show. This was the tenth annual Qt Developer Days. The conference is traditionally held annually both in Europe and North America and this year…

    Blog
  • In this post we'll look briefly at the Model View support from QML in BlackBerry 10's Cascades Framework, including an example program. The Cascades framework lets you create UIs for the BlackBerry Application Platform with relative ease. This Qt based framework can be used to…

    Blog
  • We've just returned from the Qt Developer Days European conference last week and I wanted to share a brief report on some of the highlights of the show. ICS CEO Peter Winston: Introducing the First Keynote Speaker in Berlin This was the 10th annual Qt Developer Days. The conference is…

    Blog
  • With Qt Developer Days 2013 rapidly approaching, a number of Qt developers are busy preparing presentations for the conference, myself included. I thought it would be timely to give an overview of the QML Presentation System. Introduction The QML Presentation System is a QML-based piece of…

    Blog
  • The topic of application architecture rarely comes up in the context of Qt, because as Qt developers we tend to be more interested in the classes and objects (trees) than the application as a whole (forest). However, the architecture of a Qt Quick application is the difference between pain and…

    Blog
  • Introduction With most C++ compilers now providing good support for the latest language standard, C++11, let's look at some of the new language features that are particularly useful for use in Qt programs. I won't cover all the new C++11 features; just some that in my experience are particularly…

    Blog
  • Introduction Qt 5 introduced a new set of multimedia APIs. Both C++ and QML APIs are provided. In this blog post, I will give an overview of the QML APIs for multimedia. Multimedia QML Elements The QtMultimedia module provides the following QML components: Name Description…

    Blog
  • This blog post will describe how to write a custom Qt widget and how to integrate it into Qt Designer so that you can drag and drop it onto your designs. It will also provide an understanding of important differences between Qt 4 and Qt 5 when it comes to creating designable widgets. The example…

    Blog
  • Introduction This blog posting gives an introduction to the Qt Graphical Effects module which is available in Qt 5. As of Qt 5.1 the module offers 25 QML components which support effects in these categories: blend, color, gradient, distortion, drop shadow, blur, motion blur, glow and mask. List…

    Blog
  • Introduction When I first started using Qt in 2005, one of the classes that I found the most interesting was QDataStream. It was similar to something I had written many years earlier for standard C++ that performed a similar function but with iostreams. I wanted to cover enough aspects of this…

    Blog
  • Written by Alan Ezust and Paul Ezust Foreword by Lars Knoll C++ is taught "the Qt Way". The source documents for our book are in a format that can be used to generate a textbook or instructor's slides. The book includes enough homework assignments and lectures for a 6 credit (full year) course.…

    Basic page
  • This week we kicked off the PhoneGap for Qt 5 project. The goal of the project is to develop a complete version of the PhoneGap open source mobile development framework for the Qt 5 platform. This is going to be an exciting project and we hope it will help accelerate the adoption of Qt 5, making…

    Blog
  • This week was a little slow as some people were away for the holidays. The new callback-qtimplementation by Viras got committed to github and we are now working with that version. Much of the week has been spent building Qt5. The source code for Qt5 is huge - several gigabytes. It takes…

    Blog
  • This week was another slow week as many people were off part of the week due to New Year's or extended holidays. PhoneGap, recently renamed to Apache Callback, is now being renamed as Apache Cordova. There is discussion on the mailing list about where the code repositories will reside. It may be…

    Blog
  • This week we did some marketing to promote the project. I made a posting to the callback developer mailing list and we put a link to this blog from the ICS web site. Quim Gil of Nokia kindly made a posting to the Nokia Qt blog. I also recorded a podcast with Mark Hatch for the ICS This Week in Qt…

    Blog
  • There was no blog posting last week because I was away for some vacation in a warm place. This week work continued implementing the APIs for Accelerometer and Notification and using the Qt Simulator for testing. We also started looking at the new APIs needed to use WebKit2 from Qt 5. With Qt 5…

    Blog
  • This week we finished implementing some Cordova APIs (at least for the Qt 4 version). Compass and Accelerometer are done and some of Events was implemented. Notification is done as is most of File support and we are starting work on Contacts and Camera.Note that I am going to start consistently…

    Blog
  • This week we switched to the new repository. Some pull requests from the old repository had to be resubmitted. Changes were committed for : Patches to get code to compile with Qt 5 (still backwards compatible with Qt 4) Adding Compass sensor suport Renaming references to Callback or PhoneGap to…

    Blog
  • Since the last posting we properly set up deployment of Cordova Qt for MeeGo Harmattan (e.g. the Nokia N9 phone). We also got Qt 5 packages including WebKit built for MeeGo Harmattan and tested it on a Nokia N9. Incidently, a big PR1.2 software update rolled out this week for MeeGo Harmattan phones…

    Blog
  • Throughout this project one thing that has been constantly changing has been the source code repositories, both due to several project names changes and with the move to being run as an Apache project. This last week the old repository at http://github.com/cordova/cordova-qt was removed and…

    Blog
  • In the past week or so we commited some more code for Contacts and Notification. Camera support has been submitted as a pull request. We are doing some testing on Symbian with a Nokia E7 phone  as we haven't done much testing on Symbian up to now. I updated the README.md file to better reflect…

    Blog
  • Work has been slowing down somewhat as Qt 5 has been firming up for release. The Qt 5 alpha came out on April 3rd and we tested our code with it. Work is moving ahead for a Qt 5 beta release and then the 5.0.0 final this summer. Qt 4.8.1 also came out and we tested Cordova Qt with it. A 4.8.2…

    Blog
  • We've recently been running the Cordova tests and making some fixes to get them to run better. We've documented on the Wiki how to run the Cordova tests. See the section "Running Cordova Tests" at this wiki page. We hope to have a demo video up soon showing the tests running on the simulator and…

    Blog
  • Bring Your Challenges. We've got the Solution. As the largest independent source of Qt expertise in North America with a global reach, our technical team provides collective knowledge and experience solving tough engineering challenges – providing solutions with Premier Qt Support, …

    Basic page
  • BEDFORD, MA – Sept 10, 2012 — Integrated Computer Solutions, Inc. (ICS), will be exhibiting at DESIGN East next week, Sept 17-20, at the Hynes Convention Center in Boston. Stop by our booth (#503) to see several hands-on Qt applications that will be coming soon to a gym or airplane…

    Basic page