Trusted Software Excellence across Desktop and Embedded
Take a glance at the areas of expertise where KDAB excels ranging from swift troubleshooting, ongoing consulting and training to multi-year, large-scale software development projects.
Find out why customers from innovative industries rely on our extensive expertise, including Medical, Biotech, Science, Renewable Energy, Transportation, Mobility, Aviation, Automation, Electronics, Agriculture and Defense.
High-quality Embedded Engineering across the Stack
To successfully develop an embedded device that meets your expectations regarding quality, budget and time to market, all parts of the project need to fit perfectly together.
Learn more about KDAB's expertise in embedded software development.
Where the capabilities of modern mobile devices or web browsers fall short, KDAB engineers help you expertly architect and build high-functioning desktop and workstation applications.
Extensible, Safety-compliant Software for the Medical Sector
Create intelligent, patient-focused medical software and devices and stay ahead with technology that adapts to your needs.
KDAB offers you expertise in developing a broad spectrum of clinical and home-healthcare devices, including but not limited to, internal imaging systems, robotic surgery devices, ventilators and non-invasive monitoring systems.
Building digital dashboards and cockpits with fluid animations and gesture-controlled touchscreens is a big challenge.
In over two decades of developing intricate UI solutions for cars, trucks, tractors, scooters, ships, airplanes and more, the KDAB team has gained market leading expertise in this realm.
Build on Advanced Expertise when creating Modern UIs
KDAB assists you in the creation of user-friendly interfaces designed specifically for industrial process control, manufacturing, and fabrication.
Our specialties encompass the custom design and development of HMIs, enabling product accessibility from embedded systems, remote desktops, and mobile devices on the move.
Legacy software is a growing but often ignored problem across all industries. KDAB helps you elevate your aging code base to meet the dynamic needs of the future.
Whether you want to migrate from an old to a modern GUI toolkit, update to a more recent version, or modernize your code base, you can rely on over 25 years of modernization experience.
KDAB offers a wide range of services to address your software needs including consulting, development, workshops and training tailored to your requirements.
Our expertise spans cross-platform desktop, embedded and 3D application development, using the proven technologies for the job.
When working with KDAB, the first-ever Qt consultancy, you benefit from a deep understanding of Qt internals, that allows us to provide effective solutions, irrespective of the depth or scale of your Qt project.
Qt Services include developing applications, building runtimes, mixing native and web technologies, solving performance issues, and porting problems.
KDAB helps create commercial, scientific or industrial desktop applications from scratch, or update its code or framework to benefit from modern features.
Discover clean, efficient solutions that precisely meet your requirements.
Boost your team's programming skills with in-depth, constantly updated, hands-on training courses delivered by active software engineers who love to teach and share their knowledge.
Our courses cover Modern C++, Qt/QML, Rust, 3D programming, Debugging, Profiling and more.
The collective expertise of KDAB's engineering team is at your disposal to help you choose the software stack for your project or master domain-specific challenges.
Our particular focus is on software technologies you use for cross-platform applications or for embedded devices.
Since 1999, KDAB has been the largest independent Qt consultancy worldwide and today is a Qt Platinum partner. Our experts can help you with any aspect of software development with Qt and QML.
KDAB specializes in Modern C++ development, with a focus on desktop applications, GUI, embedded software, and operating systems.
Our experts are industry-recognized contributors and trainers, leveraging C++'s power and relevance across these domains to deliver high-quality software solutions.
KDAB can guide you incorporating Rust into your project, from as overlapping element to your existing C++ codebase to a complete replacement of your legacy code.
Unique Expertise for Desktop and Embedded Platforms
Whether you are using Linux, Windows, MacOS, Android, iOS or real-time OS, KDAB helps you create performance optimized applications on your preferred platform.
If you are planning to create projects with Slint, a lightweight alternative to standard GUI frameworks especially on low-end hardware, you can rely on the expertise of KDAB being one of the earliest adopters and official service partner of Slint.
KDAB has deep expertise in embedded systems, which coupled with Flutter proficiency, allows us to provide comprehensive support throughout the software development lifecycle.
Our engineers are constantly contributing to the Flutter ecosystem, for example by developing flutter-pi, one of the most used embedders.
KDAB invests significant time in exploring new software technologies to maintain its position as software authority. Benefit from this research and incorporate it eventually into your own project.
Start here to browse infos on the KDAB website(s) and take advantage of useful developer resources like blogs, publications and videos about Qt, C++, Rust, 3D technologies like OpenGL and Vulkan, the KDAB developer tools and more.
The KDAB Youtube channel has become a go-to source for developers looking for high-quality tutorial and information material around software development with Qt/QML, C++, Rust and other technologies.
Click to navigate the all KDAB videos directly on this website.
In over 25 years KDAB has served hundreds of customers from various industries, many of them having become long-term customers who value our unique expertise and dedication.
Learn more about KDAB as a company, understand why we are considered a trusted partner by many and explore project examples in which we have proven to be the right supplier.
The KDAB Group is a globally recognized provider for software consulting, development and training, specializing in embedded devices and complex cross-platform desktop applications.
Read more about the history, the values, the team and the founder of the company.
When working with KDAB you can expect quality software and the desired business outcomes thanks to decades of experience gathered in hundreds of projects of different sizes in various industries.
Have a look at selected examples where KDAB has helped customers to succeed with their projects.
KDAB is committed to developing high-quality and high-performance software, and helping other developers deliver to the same high standards.
We create software with pride to improve your engineering and your business, making your products more resilient and maintainable with better performance.
KDAB has been the first certified Qt consulting and software development company in the world, and continues to deliver quality processes that meet or exceed the highest expectations.
In KDAB we value practical software development experience and skills higher than academic degrees. We strive to ensure equal treatment of all our employees regardless of age, ethnicity, gender, sexual orientation, nationality.
Interested? Read more about working at KDAB and how to apply for a job in software engineering or business administration.
At Qt developer Days in Berlin 2013 I had an Aha! moment. I saw a presentation written in QML rather than the usual Powerpoint/LibreOffice/Keynote. It wasn't that I did not imagine this was possible, rather the contrary, after all in KDAB we have more than 3000 slides on Qt-related topics, all written in .... LaTeX. It was nevertheless an Aha! moment for me, as it showed me a way out of a corner I had painted myself into.
Over the years I've insisted on us staying with LaTeX rather than going to LibreOffice, as that allowed me to apply numerous tools that we all knew from development, most importantly the capability to store a whole slide deck in git and have multiple people working on it at once, possibly on different branches. Just imagine you were developing a Qt application, and you were forced to store all of the application’s source files in one binary blob that could not easily be merged.
The downside with LaTeX was, however, that only a few of us knew how to operate its corner cases - It isn't really efficient that you only have one person, the training director, who is capable of writing a macro that puts a rounded blue box around text. (And trust me that macro took me a whole day to get right).
Unfortunately the system I saw at Qt Developer Days lacked numerous key features I needed, so I decided to give it a shot myself, to implement a system that would do exactly what I needed.
Today we have such a system, and I have to admit that there were quite a few people who helped me out with the effort. Over the following four blog posts you will meet them, each telling their story about a specific piece they composed.
One person you will, however, not meet is Michel Giroday, who nonetheless deserves to be mentioned. He single-handedly rewrote most of the 3000 slides from LaTeX to the new QML-based system.
In this blog I will tell you a bit about what SlideViewer is and some of the design decisions made, but I won't dive too deep into the technical bit. Stay tuned for the remaining four blogs for that.
Let me introduce to you: SlideViewer
So SlideViewer was born. The beauty of it is that all our Qt developers can help to add features and fix bugs, and even more importantly, we no longer have to stare at incomprehensible error messages from LaTeX, or hunt down a book that will tell us how to get page numbers in the table of contents.
As you can see the QML snippet is straight forward, and it displays QML's power to be extended to a domain-specific language very well. A few notes to the above slide:
The first and foremost design goal was that it should be as easy as possible to write slides. I would under no circumstances accept any complexity in implementation that made it harder.
As an example of this design decision, the Slide element, for example, has an implicit row layout which means that elements added will automatically be stacked. The simple case must be simple.
Slide, SVImage, and QtDoc are all elements we've created in regular QML/C++.
A SVText element also exists which can be used like this:
SVText{ text: "* bullet 1
* bullet 2
* ..."
}
The Slide element has such an element implicit already, to which the text property links. (The simple case must be simple).
The only unexpected thing above is the slideId property which we enforce on all slides. This is simply for internal tooling, such as checking that the slide deck does not contain the same slide twice, and to allow us to jump directly from a slide displayed in SlideViewer to the slide itself in Qt Creator.
What other features does it have?
My goal from the very beginning was that it should not be more restrictive than what we already had in LaTeX. A rather ambitious goal, given that the LaTeX slides represented almost 15 years of development, and as mentioned we had more than 3000 of them! At the same time, I wanted to avoid the problems that WYSIWYG tools have, resulting in each slide looking vastly different from the others. I believe we succeeded with those two goals, and here are just a few of the features SlideViewer offers:
Code blocks are highlighted for any of the possible languages included in the slides, including QML, C++, XML, Python, and shell commands. A code block simply looks like this:
QMLCode{code: "NumberAnimation on x {from:0;to:150duration:1000}"
}
The highlighting happens in C++ with the help of Python for QML code and a JavaScript engine for other code snippets. This part will be discussed in detail in one of the coming blog posts. Here is another example of a slide with a code example on it:
In this example the code is read directly from a file, so we don't have diverging slides and examples, and furthermore the example is instantiated directly on the slide. This is nice for two reasons: 1) No more diverging slides/code examples and images 2) If the example is interactive the trainer can show it in action directly on the slide.
Arbitrary depth of sections, subsections, sub-subsections... are possible. These levels are introduced with a simple SlideSet element:
SlideSet{title:"Introduction to Qt"Slide{ ... }Slide{ ... }SlideSet{title:"..." ...
}}
And of course the slide deck can be split over multiple files.
The table of contents is generated with a simple element:
The above results in a table of contents for the slide set with the label part-intro-to-qq to a max depth of two levels (sub-subsections) and compresses the bulleted points a bit. Each point is a link to the actual section.
We have a large Config file where the individual trainer can specify which sections he wants included and which he doesn't. That way changing a single property in that Config file (which of course also is a QML file), he can exclude entire sections of the material, or simply individual elements:
2) Create a foundation we could use to make our trainings more interactive, more fun, and a greater learning experience.
We've now migrated all the material, so we are on par with what we had in LaTeX. Ahead are all the fun parts.
Further, we can make any kind of interactive improvements, say a remote controller running on an Android device, where the presenter can see the next slide and/or instructor notes that will remind him of a key point on a given slide.
Another cool idea would be a test where students use their own computers to answer say a Q/A section, the statistics being shown directly in the slides as they answer.
Controlling the tools also makes it much easier for us to ensure quality in all the slides. Today, We for example already have a unit test suite that extracts single slides as PNG files for comparison against a baseline. I dare to declare that we are the first people in history to have continuous integration tests of our slide deck!
Another tool I’d like to see would enable the recording of which slides are used in which trainings, so we can improve precisely those slides used more often than others, or split out slides that most trainers spend a lot of time presenting.
In the coming blogs
This blog sets out the stage for four blogs to come which will go into details with specific technical issues we had when implementing SlideViewer, and which we believe many of you may also have in your projects. Stay tuned.
This is AWESOME. This is ABSOLUTELY where slides/presentations should go! I'm very much looking forward to the technical details in the following blog entries, and especially the dynamic-loading/refreshing of QML code examples to support (make easier) interactive "editing/creation" of the presentation. -- GREAT stuff!
2 - May - 2014
Laszlo Papp
Hmm, interesting project!
This got me thinking what a music editor in QML would look like instead of LaTeX like in the lilyput project...
You can say that this post was Inspiring, at least to me. :-)
2 - May - 2014
Eric Mesa
Where can we get SlideViewer? Or is it not ready for public consumption yet?
As a lover of LaTeX for writing papers, I'd love something similar for slides.
2 - May - 2014
Jesper K. Pedersen
We haven't decided if we want to make SlideViewer available to the public yet. Anyone interested in us doing so, please raise your voice, so we at least have an idea about the public demand for it.
2 - May - 2014
lhugs
Raised voice here ;-) this might really make me learn qml at last!
2 - May - 2014
Michi
how can you ask? this is just plain cool.
2 - May - 2014
CarVac
I'd definitely love to be able to use it.
3 - May - 2014
Johannes
I would be interested in using SlideViewer, too.
4 - May - 2014
Eduard Sukharev
That'd be awesome! I raise my vote here! =) Cool stuff, indeed.
5 - May - 2014
Álvaro Manuel Recio Pérez
Another vote from me. :-)
5 - May - 2014
anonymity is great
Me too.
6 - May - 2014
Sze Howe Koh
+1 Applications like this will raise the profile of QML as a powerful alternative to existing languages. Its definitely more than just a GUI programming tool!
6 - May - 2014
Sébastien Douche
If it`s works on Linux +1 :)
8 - May - 2014
Sze Howe Koh
Qt is a cross-platform library, so yes, it works on Linux :)
9 - May - 2014
capitalaslash
count me in too!
15 - Jul - 2014
bricke
+1 for SlideViewer, would be nicer if it will be an opensource project hosted somewhere.
18 - Jan - 2017
Norbert
Hey,
any news since 2014?
Would you be so kind to at least share the DisplayWindow class?
14 - Apr - 2017
Stefan B.
+1
I've seen this presentation system at KDAB training sessions several times now. Great software! I'm still waiting for this to be released to the public.
20 - Oct - 2017
CarelC
So I am assuming this is not coming to the public?
2 - May - 2014
Markus S.
Is there any collaboration with the KDE Calligra guys planned?
What you have there sounds like a cool foundation for a next-generation Calligra Stage
2 - May - 2014
Jesper K. Pedersen
I'm afraid there isn't no
2 - May - 2014
Nayar
+1 for collaboration.
Since libreoffice sucks for slides. HTML5 libraries are awesome but have XML overheads, QML is the best of all worlds.
Having a GUI to work when i'm having lazy days is always good :)
2 - May - 2014
Lucas Hermann Negri
Currently, all my presentations are done in LaTeX too. Would be nice to have an alternative too.
Please consider releasing the tool, I think it will be useful for more people too.
2 - May - 2014
Frederik Gladhorn
I'm a bit surprised that you didn't work on the existing open source project that Gunnar started in 2011 and that has seen quite some improvements since then.
http://blog.qt.digia.com/blog/2011/05/30/a-qml-presentation-system/
And I don't think that the marked for qml based presentation software is big enough to make a financially viable product out of it :)
I did indeed consider basing my work on top of that, and indeed Gunnar's tool was what I saw at DevDays. My need for a tool for 1000+ slides are, however, rather different than a tool for regular presentations, which meant that I already back then imagined that there was several features I needed that I would have to "fight" hard to get integrated into Gunnars work.
2 - May - 2014
kangjoni
Good, I wonder is that, it could be opensourced.. so that Qt would have it's own truly Qt'iest office streamline Software stack, rather than bloated KDE things..
2 - May - 2014
Emmanuel
Voice raised for making SlideViewer available!
3 - May - 2014
PePa
Public demand?? This is fantastic (but not if other people can't use it, utilize it or enhance it with supplementary tools). I think it could be the ultimate standard.
3 - May - 2014
dh
Can it export to pdf? Having a pdf as backup is always a good thing: If suddenly your notebook does not work for whatever reason, a pdf will save you since there is always someone else with a pdf viewer.
Oh, and LaTeX masters math formulas perfectly well. What about that? :-)
4 - May - 2014
Jesper K. Pedersen
Yes it does support PDF export using a rather cool mechanism where we paint the items using QPainter. Stay tuned for Thomas telling us all much more about that.
No, we never had a huge need for math, but as someone else suggested MathML or similar could be an extension vector.
3 - May - 2014
Rasmus
Looks interesting. Very clean code. Will it support math typesetting? E.g. through MathML or MathJax?
4 - May - 2014
Jesper K. Pedersen
Currently it doesn't support math, no. This is not due to insurmountable problems, but more an issue of lack of need.
3 - May - 2014
Peter
I'd love to see this open sourced!
3 - May - 2014
tom
Hmm, interresting. But you don't plan to share your slides? Or how would other open these files, is there a pdf export?
4 - May - 2014
Jesper K. Pedersen
Yes it supports a PDF export. This will be covered in one of the upcoming blogs. That part was anything by trivial :-)
3 - May - 2014
Svenn-Arne Dragly
I would really like to see this go public too. I have been using Gunnar's implementation a few times and found QML to be a great language to write slides in.
Have you by any chance considered math typesetting support with LaTeX/MathJax in the slides? I tried extending Gunnar's system with math support a while ago, but only ended up with a hacky solution that called PDFLaTeX and returned the image file name for QML to use.
5 - May - 2014
Jesper K. Pedersen
Thanks for your feedback.
As mentioned, we've not really looked into typesetting math (yet).
7 - May - 2014
Jan Kundrát (jkt)
Sounds like an extremely cool thing. As someone who has always used LaTeX, I am very interested in having the sources of this available.
8 - May - 2014
Andre Somers
Interesting stuff. I'd like to see how you're going to support printing all these slides to PDF handouts or paper...
We've just build a QML/Quick1 based reporting engine, relying on Quick1 partly because it is all QPainter based.
8 - May - 2014
Jesper K. Pedersen
Stay tuned, one of the upcoming blogs in this series is exactly about this.
Jesper K. Pedersen – COO/HR director at KDAB. Jesper has actively developed with Qt since 1998 and, despite his fancy title, still does so.
He has held almost 100 training classes in Qt since 2000. Today, his greatest claim to fame is the QML youtube series and more recently his youtube series called Qt Widgets and More.
41 Comments
2 - May - 2014
charley
This is AWESOME. This is ABSOLUTELY where slides/presentations should go! I'm very much looking forward to the technical details in the following blog entries, and especially the dynamic-loading/refreshing of QML code examples to support (make easier) interactive "editing/creation" of the presentation. -- GREAT stuff!
2 - May - 2014
Laszlo Papp
Hmm, interesting project!
This got me thinking what a music editor in QML would look like instead of LaTeX like in the lilyput project...
You can say that this post was Inspiring, at least to me. :-)
2 - May - 2014
Eric Mesa
Where can we get SlideViewer? Or is it not ready for public consumption yet?
As a lover of LaTeX for writing papers, I'd love something similar for slides.
2 - May - 2014
Jesper K. Pedersen
We haven't decided if we want to make SlideViewer available to the public yet. Anyone interested in us doing so, please raise your voice, so we at least have an idea about the public demand for it.
2 - May - 2014
lhugs
Raised voice here ;-) this might really make me learn qml at last!
2 - May - 2014
Michi
how can you ask? this is just plain cool.
2 - May - 2014
CarVac
I'd definitely love to be able to use it.
3 - May - 2014
Johannes
I would be interested in using SlideViewer, too.
4 - May - 2014
Eduard Sukharev
That'd be awesome! I raise my vote here! =) Cool stuff, indeed.
5 - May - 2014
Álvaro Manuel Recio Pérez
Another vote from me. :-)
5 - May - 2014
anonymity is great
Me too.
6 - May - 2014
Sze Howe Koh
+1 Applications like this will raise the profile of QML as a powerful alternative to existing languages. Its definitely more than just a GUI programming tool!
6 - May - 2014
Sébastien Douche
If it`s works on Linux +1 :)
8 - May - 2014
Sze Howe Koh
Qt is a cross-platform library, so yes, it works on Linux :)
9 - May - 2014
capitalaslash
count me in too!
15 - Jul - 2014
bricke
+1 for SlideViewer, would be nicer if it will be an opensource project hosted somewhere.
18 - Jan - 2017
Norbert
Hey, any news since 2014? Would you be so kind to at least share the DisplayWindow class?
14 - Apr - 2017
Stefan B.
+1 I've seen this presentation system at KDAB training sessions several times now. Great software! I'm still waiting for this to be released to the public.
20 - Oct - 2017
CarelC
So I am assuming this is not coming to the public?
2 - May - 2014
Markus S.
Is there any collaboration with the KDE Calligra guys planned? What you have there sounds like a cool foundation for a next-generation Calligra Stage
2 - May - 2014
Jesper K. Pedersen
I'm afraid there isn't no
2 - May - 2014
Nayar
+1 for collaboration.
Since libreoffice sucks for slides. HTML5 libraries are awesome but have XML overheads, QML is the best of all worlds.
Having a GUI to work when i'm having lazy days is always good :)
2 - May - 2014
Lucas Hermann Negri
Currently, all my presentations are done in LaTeX too. Would be nice to have an alternative too.
Please consider releasing the tool, I think it will be useful for more people too.
2 - May - 2014
Frederik Gladhorn
I'm a bit surprised that you didn't work on the existing open source project that Gunnar started in 2011 and that has seen quite some improvements since then. http://blog.qt.digia.com/blog/2011/05/30/a-qml-presentation-system/ And I don't think that the marked for qml based presentation software is big enough to make a financially viable product out of it :)
Here are the sources to Digias solution that is open source and has been used in many dev days presentations: https://qt.gitorious.org/qt-labs/qml-presentation-system
3 - May - 2014
Jesper K. Pedersen
Frederik,
I did indeed consider basing my work on top of that, and indeed Gunnar's tool was what I saw at DevDays. My need for a tool for 1000+ slides are, however, rather different than a tool for regular presentations, which meant that I already back then imagined that there was several features I needed that I would have to "fight" hard to get integrated into Gunnars work.
2 - May - 2014
kangjoni
Good, I wonder is that, it could be opensourced.. so that Qt would have it's own truly Qt'iest office streamline Software stack, rather than bloated KDE things..
2 - May - 2014
Emmanuel
Voice raised for making SlideViewer available!
3 - May - 2014
PePa
Public demand?? This is fantastic (but not if other people can't use it, utilize it or enhance it with supplementary tools). I think it could be the ultimate standard.
3 - May - 2014
dh
Can it export to pdf? Having a pdf as backup is always a good thing: If suddenly your notebook does not work for whatever reason, a pdf will save you since there is always someone else with a pdf viewer.
Oh, and LaTeX masters math formulas perfectly well. What about that? :-)
4 - May - 2014
Jesper K. Pedersen
Yes it does support PDF export using a rather cool mechanism where we paint the items using QPainter. Stay tuned for Thomas telling us all much more about that. No, we never had a huge need for math, but as someone else suggested MathML or similar could be an extension vector.
3 - May - 2014
Rasmus
Looks interesting. Very clean code. Will it support math typesetting? E.g. through MathML or MathJax?
4 - May - 2014
Jesper K. Pedersen
Currently it doesn't support math, no. This is not due to insurmountable problems, but more an issue of lack of need.
3 - May - 2014
Peter
I'd love to see this open sourced!
3 - May - 2014
tom
Hmm, interresting. But you don't plan to share your slides? Or how would other open these files, is there a pdf export?
4 - May - 2014
Jesper K. Pedersen
Yes it supports a PDF export. This will be covered in one of the upcoming blogs. That part was anything by trivial :-)
3 - May - 2014
Svenn-Arne Dragly
I would really like to see this go public too. I have been using Gunnar's implementation a few times and found QML to be a great language to write slides in.
Have you by any chance considered math typesetting support with LaTeX/MathJax in the slides? I tried extending Gunnar's system with math support a while ago, but only ended up with a hacky solution that called PDFLaTeX and returned the image file name for QML to use.
5 - May - 2014
Jesper K. Pedersen
Thanks for your feedback. As mentioned, we've not really looked into typesetting math (yet).
7 - May - 2014
Jan Kundrát (jkt)
Sounds like an extremely cool thing. As someone who has always used LaTeX, I am very interested in having the sources of this available.
8 - May - 2014
Andre Somers
Interesting stuff. I'd like to see how you're going to support printing all these slides to PDF handouts or paper...
We've just build a QML/Quick1 based reporting engine, relying on Quick1 partly because it is all QPainter based.
8 - May - 2014
Jesper K. Pedersen
Stay tuned, one of the upcoming blogs in this series is exactly about this.
28 - Apr - 2015
Patrick Keith O'Brien
I'm working on an open-source QML slideshow tool at https://github.com/pkobrien/qml-slideshow, if anyone is interested in helping out.