Cross-platform software libraries and APIs
Qt Creator IDE and productivity tools
UI Design tool for UI composition
for Qt projects
Digital advertising for UI apps
Usage intelligence for embedded devices
GUI test automation
Code coverage analysis
Test results management and analysis
Software static code analysis
Software architecture verification
The latest version of Qt.
Make the most of Qt tools, with options for commercial licensing, subscriptions, or open-source.
Explore Qt features, the Framework essentials, modules, tools & add-ons.
The project offers PySide6 - the official Python bindings that enhance Python applications.
Qt empowers productivity across the entire product development lifecycle, from UI design and software development to quality assurance and deployment. Find the solution that best suits your needs.
Insight into the evolution and importance of user-centric trends and strategies.
Learn how to shorten development times, improve user experience, and deploy anywhere.
Tips on efficient development, software architecture, and boosting team happiness.
Get the latest resources, check out upcoming events, and see who’s innovating with Qt.
A wealth of Qt knowledge at your fingertips—discover your ideal learning resource or engage with the community.
Whether you're a beginner or a seasoned Qt pro, we have all the help and support you need to succeed.
July 07, 2017 by Jesús Fernández | Comments
Some time ago I published a couple of blog posts talking about Qt WebGL Streaming plugin. The time has come, and the plugin is finally merged into the Qt repository. In the meantime, I worked on stabilization, performance and reducing the calls sent over the network. It also changed a bit in the way the connections are handled.
In the previous implementations, the client was accepting more than one concurrent connections. After the latest changes, the plugin is going to behave like a standard QPA plugin. Now, only one user per process is allowed. If another user tries to connect to the web server, it will see a fancy loading screen until the previous client disconnects.
The previous approach caused some problems with how the desktop applications and GUI frameworks are designed. Everyone can agree that desktop applications are not intended to work with concurrent physical users, even if the window instances were different for all users.
Previously the application had to be modified to support this platform plugin. This code was needed to make the application work with the plugin:
class EventFilter : public QObject
{
public:
virtual bool eventFilter(QObject *watched, QEvent *event) override
{
Q_UNUSED(watched);
if (event->type() == QEvent::User + 100) {
createWindow(true);
return true;
} else if (event->type() == QEvent::User + 101) {
window->close();
window->deleteLater();
return true;
}
return false;
}
};
And install the event filter into the QGuiApplication.
No more modifications in applications are needed anymore.
So, if you want to give it a try before Qt 5.10 is released (~November 2017) do the following:
Since WebGL was modelled using OpenGLES2 as reference, first thing you will need is to have an OpenGLES2 version of Qt built. To do that, you need to pass the parameter -opengl es2 to the configure before building.
Example:
./configure -opensource -confirm-license -opengl es2
Depending on your system it is possible you will need some aditional headers and libraries to be able to use es2.
After building everything, you can try to run a Qt Quick example.
To try the photoviewer example we need to build it and run with the -platform webgl parameters:
./photoviewer -platform webgl
[embed]https://www.youtube.com/watch?v=dSln8tbuziE[/embed]
If you want to try the Qt Quick Controls 2 Text Editor:
./texteditor -platform webgl
[embed]https://youtu.be/3KxSDWOCnY4[/embed]
Currently, the plugin only supports an option to configure the port used by the embedded HTTP Server. If you want to listen in the default HTTP port you should write -platform webgl:port=80.
The plugin will be part of Qt 5.10 release as a technology preview (TP), as it needs to be improved. Currently, the plugin contains an HTTP Server and a Web Sockets server to handle the browser connections. I'm planning to remove the servers from the plugin and start using a Lightweight QtHttpServer we are working on right now. Once it's ready, you will be able to create an application server to launch different process inheriting the web socket to communicate with the browsers. This will allow for supporting more than one concurrent user instead of sharing applications among users.
Note: The plugin only works using the Threaded Render Loop. If you use Windows or a platform using a different render loop ensure you set QSG_RENDER_LOOP environment variable to threaded
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Mar 15, 2024
Qt 6.7 introduces convenience improvements for implementing typical..
Mar 14, 2024
We are happy to announce the release of Qt Creator 13 RC! For more details..
Mar 13, 2024
A new version of Qt for MCUs is available, bringing new features to the Qt..
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.