And then there apps developed for Plasma Mobile, Sailfish OS, and Ubuntu Touch (UBPorts) that are all written in some form of Qt (whether that be Qt6 + Kirigami on Plasma Mobile, Qt5 + Silica on Sailfish OS, Qt5 + LomiriUserInterfaceToolkit on Ubuntu Touch). Kirigami ones most notably “are compatible with smartphones” if supported by the developer.
While it is certainly achievable to have a competent progressive app that scales across form factors, in my experience most apps end up having a watered down experience as a result. You either end up with the app on desktop not taking advantage of its form factor (larger resolution screens, mouse & keyboard, shortcuts, not shoving everything under the sun under a hamburger menu, etc.) or an app on mobile that just isn’t well thought-out in terms of daily ergonomics. Ideally, you have the business logic separated as much as possible from the UX layer, use some shared componentry, and have effectively two dedicated apps that best target their respective form factor).
With GTK3 → GTK4, more widgets you would have liked to use (that ideally should’ve been base Gtk4 widgets) were instead put in in platform libraries (libadwaita), forcing a given user style across all form factors regardless of (desktop) environment. The expectation is more will shift to platform libs in GTK5 and beyond.
Expanding on that, Gdk and Gtk just don’t have the same set of APIs as Qt does. You will need to integrate directly with more with third-party libraries, see for example GStreamer vs just using QtMultimedia. This makes portability harder across devices and architectures.
Practically speaking, the biggest thing stopping one from developing an app that’s Qt with say different targets for desktop and various mobile devices (see abovementioned examples) is their usage of different Qt major versions (Kirigami using Qt6). Getting Silica over to Qt6 is almost certainly less work than moving it to GTK, seeing as Silica is literally a QML module. I imagine the harder problems are licensing (there was talks during the community event about the notion – hypothethically speaking – of having a Silica in Qt6 for open source and one in Qt5 for business) and all the patches that have been applied to Qt in Sailfish over the years.