Qt


  • ICS is joining The Qt Company in Dallas, TX for a Meet Qt seminar on September 20th. 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, however spaces are…

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

    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…

    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…

    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…

    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 onPositionChanged to handle the user sliding the "pill"…

    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 second MouseArea and drag property) and no text property. A Switch can be toggled either by tapping or dragging…

    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, …

    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
  • Need Qt Consulting in Southern California? Work with the Experts ICS is the Premier Qt Consultant in SoCal and Across the U.S. Whether you're exploring Qt for a project in its nascent design phase or have an existing project that requires Qt consulting expertise to accelerate development, ICS is…

    Basic page
  • As the largest UX, embedded and mobile Qt consulting firm in North America, Integrated Computer Solutions (ICS) is known for creating elegant touchscreen solutions for a wide range of products -- from fitness equipment to in-vehicle entertainment systems. We have Qt consultants located coast to…

    Basic page
  • 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
  • Need Qt Consulting in the Houston Area? Work with the Experts ICS is the Premier Qt Consultant in Texas and Across the U.S. Whether you're exploring Qt for a project in its nascent design phase or have an existing project that requires Qt consulting expertise to accelerate development, ICS is the…

    Basic page
  • Need Qt Consulting in Silicon Valley? Work with the Experts ICS is the Premier Qt Consultant in the South Bay and the U.S. Whether you're exploring Qt for a project in its nascent design phase or have an existing project that requires Qt consulting expertise to accelerate development, ICS is the…

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

    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 …

    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…

    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
  • Get the full on-demand video here: http://www.ics.com/webinars/qt-beginners-part-5-ask-experts 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…

    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
  • Contact us to schedule any of the below workshops onsite at your organization. Accelerate Time to Market by Pipelining UX with Development  In this half-day workshop, we’ll share real-world success stories highlighting projects we’ve designed and built using a pipelining approach, as…

    Basic page
  • What's the best approach for doing webscraping in Qt now that QtWebkit has been deprecated? QtWebEngine is the replacement for QtWebKit and provides similar functionality. Webscraping generally refers to grabbing web pages and extracting content from them, but not rendering them. You should be…

    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
  • Ask your Qt Questions Get the full on-demand video here: https://www.ics.com/webinars/qt-beginners-part-2-widgets 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…

    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
  • Ask your Qt Questions Questions and Answers from Qt for Beginners Part 1 - Overview and Key Concepts   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…

    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
  • Qt for beginners part 1 overview and key concepts from ICS   Read the questions and answers from the live webinar.

    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
  • The Qt Company Qt is a C++-based framework to enable the software development of powerful, interactive, cross-development applications and devices. ICS's partnership designation from The Qt Company represents an acknowledgement of our distinctive Qt expertise, while supporting the vision for…

    Basic page
  • 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
  • Anything worthwhile takes time. As with anything in life, no matter how good we are, we can always improve, learn and grow. Engineering is no different. There is always something new to learn, even experts keep learning. ICS's Qt Professional Development Coaching Program brings industry leading…

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

    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
  • Join ICS for a Qt Meetup in Seattle, Boston, Southern California, Silicon Valley, Vancouver or Austin. The meetups are held on a monthly basis with various speakers and topics. Come out to one of the meetups to network and learn about interesting happenings with Qt. If you're interested in…

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

    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…

    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
  • Basic page
  • 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
  • Please check your email for the link to the PDFs to download.

    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…

    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 latest Qt…

    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
  • Need Qt Consulting in Boston? Work with the Experts Boston-Based ICS is the Premier Qt Consultant in the U.S. Whether you're exploring Qt for a project in its nascent design phase or have an existing project that requires Qt consulting expertise to accelerate development, ICS is the company to…

    Basic page
  • 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
  • Resources for Your Qt Development Lifecycle Qt Consulting: Software Application Consulting Engagements ICS designs, develops and deploys powerful integrated solutions for touchscreen, embedded and desktop applications. As the largest source of Qt expertise in North America, with a growing…

    Basic page
  • 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
  • Need Qt Consulting? Work with the Experts Whether you're exploring Qt for a project in its nascent design phase or have an existing project that requires Qt consulting expertise to accelerate development, ICS is the company to turn to. Our deep knowledge of Qt-powered embedded and application…

    Basic page
  • 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
  • Please login or register in order to view and download the information provided.   Written by Alan Ezust and Paul Ezust Foreward 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…

    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…

    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
  • I thought it would be a good time to step back and review where we are on the Cordova Qt project, as it may not be obvious just from glancing at the Wiki. Software The source code is maintained in the Apache git repository at git-wip-us.apache.org as well as a read-only mirror…

    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