Last year, we shared the story of a new collaboration with the Cologne University of Applied Sciences (German: TH Köln) for a new course titled Engineering Desktop Applications with C++ and Qt (EDA). The first edition gave students the chance to explore modern C++ and Qt development in a hands-on setting, with teams designing and building their own music player application.
Now, the collaboration has successfully entered its second round.
During the winter semester of 2025/26, the focus shifted from audio applications to photo editing tools, challenging teams to create intuitive and capable solutions for modern image workflows.
The new theme brought a fresh set of constraints around functionality, performance, and user-experience. The final projects reflected not only strong technical execution, but also a clear understanding of usability, software architecture, and real user needs.
A Word from Prof. Dr. Jan Salmen
After the first run turned out to be such a success, it was an easy decision for us to offer the EDA course again in the same format. Once more, it became clear how quickly the participants develop an interest in software development with C++ and Qt and how enthusiastically they pursue their own projects once they get started. The results achieved by the teams were impressive once again.
Throughout the course, Qt provided a common foundation on which students could explore software architecture, interface design, and modern C++ development while gaining practical experience across all stages of an application project.
Student Projects
At the end of the semester, each team presented a fully functional photo editing application. While all projects were based on the same overall theme, every team approached the challenge differently and developed its own ideas, priorities, and solutions.
Imedit
Team Members: Enes Günay , Enis Okutan , Muhammed Kizil
IMEDIT is a desktop photo editing application built with Qt and C++ that focuses on a clear and streamlined workflow for everyday image adjustments. Many existing editors feel overloaded for simple tasks, so we structured our application around focused screens for import, editing, filtering, and export. The feature set includes brightness and contrast adjustments, cropping, rotation, artistic filters, undo functionality, zoom controls, camera capture, and an AI-assisted prompt dialog.
A key challenge was maintaining consistent image data between OpenCV processing and Qt rendering. We implemented a centralized image management layer to handle conversions and ensure a clean separation between processing and UI.
We also developed a shared undo mechanism that tracks image states across multiple editing screens. Smooth zoom behavior was implemented using a dedicated controller and Qt’s signal-slot system.
The project heavily relied on Qt Widgets, QStackedWidget-based navigation, custom overlays for cropping, and QPainter-based rendering. OpenCV was used for image processing, while Qt Multimedia and Qt Network enabled camera and AI-assisted features.
Photo Manufactura
Team Members: Anh Duong Tran , Ghirishaanth Ananthavadivel
As media technology students with hands-on experience using professional photo editors at university, we know firsthand what truly matters in an editing tool. Most of these editors require a paid subscription and come packed with advanced features that students and hobbyists rarely need. While free alternatives do exist, they typically fall short on the essentials, lacking RAW file support and a professional-grade workflow.
This inspired us to build a photo editor made for students and hobbyists: one that natively supports RAW images, enables a streamlined editing workflow, and leverages GPU acceleration to process and export multiple files at once. On top of that, the interface is designed to be highly intuitive, so users can focus on their creativity rather than figuring out the tool. And to take things a step further, the editor features AI-powered Style Transfer, allowing users to apply other aesthetics to their images with just a click.
The interactive CanvasWidget building upon QOpenGLWidget was by far the hardest. Implementing smooth zooming, panning, interactive free-form and fixed-ratio cropping, 4-point perspective cropping, and bounding-box constrained rotation while maintaining synchronized Model-View-Projection matrices required intense coordinate management. We solved this by establishing rigorous bidirectional coordinate mappings and rendering interactive UI overlays like grids and handles via standard QPainter right over the hardware-accelerated OpenGL texture in paintGL().
Advanced Qt Style Sheets combined with event overrides were crucial to breaking away from rigid legacy OS styling. Furthermore, sticking to a strict MVC pattern by exclusively routing UI actions through Signals & Slots into the ApplicationController kept our UI components modular and highly decoupled.
We developed a modular image editing application with a multi-tab feature that allows users to work on several images simultaneously. A key feature is batch processing, enabling image operations to be applied to either a single tab or all open tabs.
The system is structured using a clean separation between the model (ImageDocument), a service layer (ImageService with QUndoStack for undo/redo), and presentation logic, ensuring maintainability and extensibility. Image editing operations are encapsulated via a dedicated IEditor interface, which standardizes processing modules and allows new editing features to be integrated in a consistent and scalable way.
Additionally, we implemented a custom HistogramWidget by subclassing QWidget and rendering it manually with QPainter, demonstrating how specialized UI components can be built from scratch.
Closing Thoughts
The final presentations once again highlighted how much can be achieved within a single semester when students are given the freedom to develop their own ideas and bring them to life in software. Each team approached the challenge in its own way, resulting in a diverse set of applications and many creative solutions.
A Word from Ursula Derichs
It’s truly impressive to see what the teams achieved using the Qt framework. Beyond implementing core features like filtering, zooming, and cropping, the students surprised us with unique solutions and aesthetically pleasing designs. The projects reached a new level of excitement in the final phase, when teams developed complex optional features. This resulted in innovative tools—some with built-in AI capabilities—that go beyond standard graphics software. Great job to all teams for delivering such strong results!
For me, it was a pleasure to return to TH Köln and spend the final day on site with the students and teaching staff. Seeing the finished projects presented in person and discussing the development process behind them made for a rewarding conclusion to the course.
We would like to thank Prof. Dr. Jan Salmen, Ursula Derichs, and all participating students for their commitment, enthusiasm, and collaboration throughout the semester. We look forward to continuing this partnership and supporting future editions of the course.
The image above shows a few of the participants from the on-site event, displayed in the Photo Manufactura application with edits applied locally. Great work by everyone involved!