[Qt-creator] Couple of questions about the design of Qt Creator

Elvis Stansvik elvstone at gmail.com
Sun Sep 10 11:03:13 CEST 2017


Hi all,

In a quest to find inspiration for good Qt application architectures,
I've been looking at the plugin based one you're using in Qt Creator.
It strikes me as a really nice design.

I've been reading the available docs on it, and dug into the code a
bit. This may be a bit much to ask, but I was wondering if any of you
devs could answer a few questions that popped up? It would be much
appreciated!

It's really just two questions, about two different topics:

1. The Invoker / invoke<...> Thingie:

You have ExtensionSystem::Invoker and the associated invoke<..>
helper, which are syntactic sugar for achieving "soft" extension
points. It seems it's not used that much (?). I grepped for
"Invoker|invoke<" in the code and could only find a few uses of it. I
also grepped for "invokeMethod" to see if the approach was being used
"manually" so to speak (without the sugar), and found a few more hits.

What was the motivation for adding this? I assume it's for cases where
you want a looser coupling between plugins (no linking, no shared
header), but can you give an example of when you really wanted that
looser coupling and why?

2. The Plugin System in General:

Is there anything about the plugin system in its current form, or how
it is used, that you would do fundamentally different if you could do
it all over again? Any areas that you find messy/awkward, that need a
re-think/makeover? In short: What are the biggest warts in the code in
your opinion?

Many thanks in advance,
Elvis



More information about the Qt-creator mailing list