Most of the information on Qt (news, information on the website, articles, blog posts, accounts in social networks) is available only in English. And although each developer should preferably speak English, for many, the language barrier is still a problem.
I work at The Qt Company (in the Oslo office, Norway), and seeing how a rather big Russian-speaking community was deprived of attention, I decided to write this article in Russian and tell a little about the Embedded World 2017 conference held last week in Nuremberg, and also share plans companies for future releases of Qt. But although the article is also in Russian, the links still lead to English documentation, as well as some terms I decided to leave in the original.
Embedded World is an annual exhibition dedicated to embedded (“embedded”) solutions and everything related to it. There are hardware manufacturers (portable devices, motherboards and microcontrollers from Intel, NVIDIA, Toradex, NXP, Qualcomm and others), software (operating systems and frameworks from Microsoft, QNX, Green Hills, Wind River and others), as well as many service companies.
And of course The Qt Company also took part in the exhibition , as development under the embedded platform for the company is now a priority. This year we had the largest stand - 200 square meters - on a par with Microsoft and Intel. In addition to our stand, Qt could also be seen on the stands of other companies (including Microsoft), simply because they used Qt in their products ( for example ).
And by the way, passing through the exhibition, we met one service company, sequality , which, among other things, suddenly showed on its stand a comparison of HTML and QML. We, of course, immediately interviewed them. The essence of their demonstration is that the same application was implemented in HTML (AngularJS) and QML, while the developer did not have prior experience with QML:
I would like more people to watch this video, especially the manufacturers of set-top boxes and media centers for passengers on airplanes.
In addition to the already standard set of demos ( Boot to Qt , profiling and debugging on embedded platforms, using Qt SCXML ), new ones were also shown.
Photos and videos are few, because I hoped for a special person with a camera who shot everything, but these materials are still being processed and will have to appear on the event page .
Announced in June 2016, the Automotive Suite - a framework for creating a digital tool cluster and IVI in cars - is becoming more and more distinct . An example of a solution based on RTOS INTEGRITY collaboration (for instrumental cluster) and Embedded Linux (for IVI - Neptune UI , application manager and examples of the applications themselves: navigation, music player, etc.) running by the hypervisor was demonstrated in the "automotive part" of the stand on one device (head unit). By itself, the instrumental cluster and IVI are displayed on different displays (the photo is not from the exhibition itself, but it looked about the same):
Also, by tradition, fast device loading was demonstrated using Boot to Qt:
The Qt Configuration Tool is a tool for customizing Qt builds. It has been demonstrated how to eliminate unnecessary components by simply “squeezing” the appropriate checkboxes in the component tree and reconfiguring Qt to get a smaller build size.
Qt 3D Studio is a former NVIDIA DRIVE Design Studio. They showed the current (already working) state of the tool, demonstrating the creation of a simple IVI template with the integration of the result in the form of a QML object and interaction with it.
If you can call it that. This is a simple sensor with a gyroscope that sends data via Bluetooth to a control device, which builds a graph based on this data and displays it on the display with dynamic visualization, while simultaneously transmitting data to the server from which the application picks it up on an Android tablet, which again displays This is in the form of graphs with dynamic visualization.
It doesn’t sound very exciting, but it looked more interesting live - using this sensor, you had to assemble a Qt logo of three rotating elements on the display, each of which responded to changes in a certain gyroscope axis. As I said, all changes were also displayed on the Android tablet, which was the purpose of the demonstration - in industrial automation, scenarios when the equipment is scattered across a huge territory of a conditional plant are quite common, and the engineer needs to control this from his (mobile) workplace.
In addition to the demo and small presentations, they also answered questions from visitors. There are still questions like " and Qt is it not just a Linux UI framework? Do you still do something in embedded? ".
At our booth, in addition to The Qt Company itself, we also presented ecosystem partners: KDAB , froglogic , Witekio , brightONE , basysKom , e-GITS , Toradex , LinkMotion . Also demonstrated were the products of the company's customers: Rimac and Ulstein .
KDAB demonstrated a tool for Qt application introspection - GammaRay :
And also showed the possibility of three-dimensional vehicle diagnostics using augmented reality. How it worked - QR codes were put on the car body, and in the application on the tablet it was possible to point the camera at one or another part of the car, and a three-dimensional object, for example, an engine, was “drawn” on the screen.
They demonstrated Squish , a testing tool that allows you to conduct GUI tests not only for desktop applications, but also on embedded platforms.
They presented their on-board computer ( carputer ) - a ready-made solution (hardware plus software) that immediately implements an instrumental cluster (speedometer, tachometer, etc.) and IVI (entertainment system inside the car: media, applications, navigation, etc.):
Rimac is a cool car company from Croatia, the creator of electric supercars , which are made by Porshe 918 and LaFerrari . They brought their Concept One to the exhibition, which stood in the very center of the booth:
Rimac used Qt when developing the internal systems of the car (UI, collecting information from sensors, interacting with the server):
Overview of planned changes and new Qt components. Most of the information has already been published in the blog . A list of changes to the upcoming version 5.9 can be viewed on the wiki .
It looked like an old roadmap:
With the exception of Qt Quick Compiler to the current version 5.8, everything was implemented according to plan. And here is the new roadmap:
And then a little more detail.
At the moment, the company offers two (three) products: Application Development and Device Creation . They are almost joined by the Automotive Suite .
Now we are working on creating a product for industrial automation and, possibly, a separate product for STB, they are also a set-top box (TV set-top boxes).
This, if I may say so, is the "application store" inside Qt, only instead of applications there will be libraries and plugins. How would NuGet for Visual Studio. Now nothing is known exactly, everything is still being discussed, but the idea is that any company can publish its plugin / library in the "Qt Store" - for example, the implementation of the KNX protocol, and then any user can purchase this plugin / library and use it in your project. Everything published in the store will be preliminarily tested for compatibility and so on, so that the installation and use process is as simple as possible for the user. The developer company, respectively, receives its share of the sale, Qt - its commission. The specific percentage has not even started to be discussed, all these are only plans and ideas.
Now it is being prepared as part of the proposal for industrial automation (because I gave an example with KNX), but, of course, this should be available in all Qt products.
Looking at how Qt Quick Designer is used (almost nothing), it was decided to combine code mode and design mode:
Cache for OpenGL shaders , which allows to significantly reduce the time of their initialization. That is, after the first launch of the application, subsequent ones will occur faster, and this is relevant even for drivers with their own implementation of the shader cache (albeit to a lesser extent).
A mechanism is being developed for sharing such resources as bitmaps (images) in order to reduce memory consumption in multiprocessor systems. As a result, the application launch time will be reduced and, in fact, the memory consumption will be reduced.
The ability to use not only OpenGL, but also other graphic backends, such as Vulkan . Specifically, in Qt 5.9, OpenVG support is expected, which will allow Qt Quick applications to run on platforms without OpenGL support, but having OpenVG - however, by analogy with 2D Renderer, not all features will be available (for example, graphical effects, particles).
I’ll say at once that nothing new is planned for Qt Widgets, widgets are considered to be "well-established" technology, besides not very suitable for embedded platforms (which are now in priority), because Qt Quick remains in focus and everything new will appear right here. However, this does not mean that the widgets will be abandoned - corrections and improvements will continue to come out, but you cannot count on something new for them (although discussions on this topic are conducted within the development team).
Work continues on the implementation of the integrated Qt Quick Compiler functionality. The next step is to add a "ahead-of-time" cache generation in addition to the already implemented caching mechanism. According to the plan, Qt Quick Compiler should have disappeared in version 5.8 (9), however, not everything went according to plan, and therefore commercial users still have this advantage over users of the Open Source version (in which Qt Quick Compiler is missing).
New elements of Qt Quick Controls: first, the TableView promised for a long time, as well as the DelayButton, ScrollView, edited ComboBox and support for "multiple touch" (multitouch).
Improvements in the QML engine. Of the most significant is recycling the garbage collector in order to improve performance and reduce memory consumption by Qt Quick applications.
Path rendering (primitives) in Qt Quick. This will allow for declarative creation of complex shapes from lines, curves and arcs using QML directly (with hardware acceleration), which means a significant performance increase compared to the current state of affairs. There will also be specific extensions depending on the vendor (for NVIDIA hardware, for example).
The recently announced WebGL streaming (GUI translation) allows you to use a web browser (or Qt application again) as a “remote display” for a device that will “broadcast” your GUI over the network.
In the case of the browser, everything will work without having to pre-install anything on the client (desktop, tablet, phone) - all that is needed is WebGL support in the browser.
Input from the mouse / keyboard / touchscreen will be transmitted back to the Qt application on the device.
This scenario is especially relevant for devices without their own display, as well as for those that are located in places that are difficult of access for people (in a super-distant warehouse, on the one-hundred-and-twenty-seventh floor, or even under water).
So-called native common controls . At the moment, this is exclusively within the framework of the experiment on the implementation of a universal set of "native" controls, which will look like "native" on all supported platforms.
Whether the project will go further than the experiment is not yet known. How this will relate to existing Qt Quick Controls is not yet known.
Several areas in which development is underway:
Quite often questions about tools for designers, and especially tools for creating 3D interfaces - oddly enough, but it turned out that this is quite popular, and the main flow of requests comes from the auto industry (3D in the instrumental cluster and IVI), as well as home appliance manufacturers (coffee machines, smart refrigerators, etc.).
Until now, only Qt Designer (which, in fact, is not very suitable for designers), as well as import from Photoshop via PNG Express (by the way, looking forward, a new mechanism will be introduced for import from third-party editors, but now is not about that).
But now, as announced , NVIDIA donated its NVIDIA DRIVE Design Studio product as a contribution to the development of Qt. This is just the same editor to create a 3D GUI, focused more on designers than developers.
NVIDIA decided that the product would have a brighter future, because they faced some distrust in the market - using the product meant an iron dependency on NVIDIA, since the result could only work on NVIDIA hardware. Accordingly, under the control of The Qt Company, the decision will be “exempt” from these “flaws”. Work is already underway, and one of the first supported non-NVIDIA devices was (a) Raspberry Pi (a) selected.
In general, the integration of the solution in Qt is not limited to just changing the logo and renaming. The plans include the implementation of the most "dense" integration with the involvement of an existing 3D Qt framework.
The planned date of the public beta version is somewhere in the second half of 2017. The full release is probably already in 2018. Now the project does not spread even within the company, everything lies in a closed repository, but relatively soon we have to distribute access, and then I think to write some first-hand review.
Revitalization support for RTOS INTEGRITY.
Work on supporting Apple platforms . Apple TV: tvOS - 95% is almost the same as iOS, because support for this platform is at least claimed. The main difficulty now is the input system (as it uses the remote), but the first demos have already been successfully tested. Apple Watch: currently supported without GUI - that is, audio, network, some kind of background processing, and more.
Future plans include a review of the new Qt 3D Studio, when its internal release will take place, as well as an article about the current status with licenses and the differences between them (well, a lot of questions on this topic).
PS The company is now actively hiring people, this year it is planned to find more than a hundred people (not only developers). About hunting in articles is not recommended, I know, but simply the company's ability to search for people in non-English-speaking countries is limited, therefore announcements on moikrug.ru, HH and others are unlikely to ever appear. In general, if interested, I can tell you a little more.
PPS And the nested lists in the HTML-markup did not deliver? Or auto-generated content (TOC)?
upd. I will not respond to some comments immediately - first I will try to get more detailed information from specific people involved in the development of the piece of interest.
Source: https://habr.com/ru/post/325198/