Juce VS Qt (GUI only)

Hello,
Not to start a battle here, but I was wondering if there are some differences in what both can achieve for GUIs.
For example, if I am not mistaken, Juce can’t achieve glow along a path.

:wink:

Since QT focusses on GUI, it has more widgets and they are probably more elaborate.

On the other hand, afaik (haven’t used it for too long) they don’t have anything ready made for thread safety, like the SliderAttachments etc. The connections between controls and the audio thread, including beginChangeGesture and endChangeGesture is not there.

QT is better suited if you need to use shared libraries, because they guarantee binary compatibility by providing a stable API and everything implemented behind a PIMPL wrapper. The JUCE API is more improved continuously, so that only statically linking is feasible.

Things like a glowing path can easily be implemented by drawing the path twice, once with a blurry brush and lower opacity and a second pass with the brighter colour.
There is also a class GlowEffect, that you can apply on an Image.

My personal experience is, that both are fine, but if you can avoid mixing them, that is the real benefit.

2 Likes

I’ve used Qt and JUCE a fair amount. The main benefit to Qt is that the controls look ‘native’ (even though they aren’t. And a lot more controls are ready out of the box i.e. you can use ListBoxes etc without needing to subclass anything. There is also a visual GUI designer with a pretty powerful layout system, the JUCE GUI designer is a lot more limited and deprecated.

If you are building a ‘standard’ desktop app, Qt is way faster / less effort. I haven’t used it on mobile.

Qt is older than JUCE and they’ve done less breaking changes, so the C++ API is quite dated. It tested much better than JUCE, I’ve never found a bug in Qt. It also supports accessibility. Qt also isn’t standard C++, it requires a pre-compile step, that may or may not integrate nicely with your IDE.

Qt uses signals/slots where JUCE would use a listener. signal/slots automatically disconnect, saves me from the #1 source of crashes I have when working with JUCE.

Qt is LGPL/commercial while JUCE is GPL/commercial. Commercial Qt is more expensive than JUCE, but they offer better support.

My advice:

Writing a desktop app, use the native GUI toolkit / language for the platform.
Need cross platform, use Qt.
Need to make plugins, plugin hosting, audio apps, use JUCE.

5 Likes

Thanks for both answers :slight_smile:

g-mon, do you think visually speaking Qt can achieve things that Juce can’t? I’m also thinking of the known issue of small font rendering in Juce. Does Qt have similar issues?

Haven’t compared the font in a long time, I think JUCE fonts look fine now, especially after upgrading to retina screen.

JUCE you can transform sub components scale your entire UI, I don’t think Qt has that, in Qt you can just transform the painting.