← All ideas
  • Published 14 Dec 2018

Blender GUI in Qt

Qt is awesome

Qt is multi-platform

Qt is maintained by talented people who take good care of it

Qt is known by a large amount of CGI coders and not CGI coders

Qt has an official python binding

Qt is opensource

The effort of porting Blender GUI to Qt would be a huge work, but paying sooo much once it's done ! Because the blender team would be freed of almost any maintenance of the GUI core, creation of GUI features, teaching how it's designed before anyone can hack it.

On the long term, that would be a total benefit for users too. because the features tools and GUI tweaks would not be accessible to a few coders only, advanced features of Qt that took many years of effort to be made would be available for Blender immediately, and features would land into the software faster. Integration into pipelines would be more attractive for studios, as Qt is the standard in many of them.

What do you think about it ?

43.8%

Development Status: Open

Upvote 7 Downvote 9
XYZS
14 Dec 2018

7 Comments

julian_eisel

Qt is multi-platform

There are other toolkits that are multi-platform. Qt's extensions to the C++ language (MOC) actually make platform support quite difficult. In fact Qt does have a bit of a bad reputation when it comes to their multi-platform support.

Qt is maintained by talented people who take good care of it

I don't want to argue that by itself, however I want to point out that Qt has a huge history to carry with it. So its code contains many historic issues that are hard to address by now. QString vs std::string is just one well known example.

Qt has an official python binding

I think a Python binding is the least of our problems when we talk about improving our UI code.

Another thing to mention is that I expect Qt to increase the Blender binary size quite a lot.

Note that I'm not at all saying that Qt is bad! This is solely about the question of suitability of Qt * for Blender *. I don't see any convincing point here that would even come close to outweighing the downsides.

Generally speaking, I know that the idea of using Qt is not well received amongst Blender developers. I wrote down a number of reasons <b>against</b> using an existing toolkit some time ago in the docs of my bWidgets project (the "Issues with other Toolkits" section was a bit rushed and needs work though).

My basic opinion is: Something needs to be done about our UI code, but a custom, self-made solution is much preferable.

2
XYZS Author

@Julian Eisel:

I see that you started a project called bWidgets, and it looks a bit inspired by Qt which is good. Is it advanced ? Is it in talk to become the official new GUI toolkit ? I am curious.

julian_eisel

@mfx: Even though I've spent a lot of time on the project already, I wouldn't call it advanced yet.
I'm intentionally trying to not rush things and I try to defer important decisions. Later then, they can be done from a more informed perspective.

Just over the last couple of months, I finally decided on a high level design for bWidgets that I'm quite satisfied with. Once that is implemented, the (potential) benefits become much more tangible. That is also the point at which other devs wanted to take a closer look at it.
In a few weeks, I should have plenty of time for this. So my plan is to have the high level design implemented in few months. After that we should be able to add all features needed to bWidgets (which will take a while).

jason

Here's a short list of complications that will be run into if development takes this route:

  • Qt doesn't have all of the same/necessary widgets that are currently found in Blender
  • Although Qt is maintained by good, talented people, if Blender needed a feature that wasn't in Qt, there's no guarantee that the feature would be added. Blender developers would either need to lobby the Qt team or maintain a Blender-specific fork of the library. Realistically, they'd probably have to do both.
  • Qt is a large library that represents more overhead than smaller toolkits that are often used for applications that need good performance.
  • Blender's current UI toolkit works. The code is terrifying and could use quite a bit of love, but like Qt, it is also open source, multi-platform, and has an official Python API. I'd be concerned that the developer effort required to switch to any different toolkit would impede the development of other features in Blender that many folks would probably put as a higher priority.
2
XYZS Author

@Jason van Gumster:

The widgets of Qt can deal with many all the blender needs. Of course they will have to make custom code too like for the node system. That is why I said It's a big amount of work.

The overhead of Qt is not huge if useless module are not used for no reason like it's often the case. And many powerful programs are made using Qt, which is a proof of concept by itself.

If blender UI toolkit has an horrible code, it's precisely because they struggle to maintain it, even more to make it evolve.. If you struggle to maintain a framework you created, that maybe means you need to address this complexity to something that works better and/or to someone that take care of it (Qt).

But I think long term here, try to think long term benefits too ?

ruchit

+1000

1
deepdive

Sounds like "the effort of porting Blender" would be huge dollars as well, how would you fund it?

1