PDA

View Full Version : Combining Qt with other libraries (Boost, ...)



Raistlin
12th February 2007, 14:07
I am currently developing a Windows application (concerning analysis of volumetric data from CT) which is stand-alone, but where I also want to give users the possibility to write plugins which can be loaded at start-up. I do not want to force them to use Qt, since they probably do not all want to release their source code (they can be both academic as commercial users). Also, they do not need too much Qt functionalities since the main purpose of the plugins lies in the underlying mathematical algrotihms. So, basically, I need to provide to them :

- Access to data from my code, which is off course not a problem.
- File I/O and display possiblities, also no problem since they operate on the previous data structures which I provide.
- Progress indication. I already have a QProgressDialog in my main application, so I can give them the possibilities to connect to it through a signal/slot architecture (not Qt).
- Thread support, also not Qt.
- Input of parameters, which I could probably manage by using some generic QDialog.

So basically, I think I could succeed if I would find a different signal/slot and thread implementation. They should be free and not GNU. I have a commercial Qt license, so there are no problems in that regard.

I came across the Boost libraries, but they do seem to be quite heavy-weight. Also, the simpler I can keep things for my users, the better. So any suggestions or experiences in this area are greatly appreciated.

wysota
12th February 2007, 21:04
I am currently developing a Windows application (concerning analysis of volumetric data from CT) which is stand-alone, but where I also want to give users the possibility to write plugins which can be loaded at start-up. I do not want to force them to use Qt, since they probably do not all want to release their source code (they can be both academic as commercial users).
If they have a commercial licence, they don't have to publish the source code while redistributing.


So basically, I think I could succeed if I would find a different signal/slot and thread implementation. They should be free and not GNU. I have a commercial Qt license, so there are no problems in that regard.

I came across the Boost libraries, but they do seem to be quite heavy-weight. Also, the simpler I can keep things for my users, the better. So any suggestions or experiences in this area are greatly appreciated.

Boost is quite widespread and not so heavy at all. AFAIR the library consists of a bunch of smaller libraries so you can just include the functionality you want leaving the rest out.

One hint - if you want to use Boost signals, you'll have to ask Qt not to use the signals and slots keywords. You can achieve that by defining some macro (consult the manual) and then you'll be able to use Q_SIGNALS and Q_SLOTS macros instead of "signals" and "slots" keywords leaving those for Boost.

Raistlin
13th February 2007, 06:28
I know commercial licenses are an option (we have one), but we are in fact part of a university, with lots of people using software of ours in an academic environment. However, even then releasing source code is not always trivial. And for a client of ours to be forced to buy an additional Qt license (which is not that cheap compared to the prices we can charge) is not always a good thing.

I think I will try to work out some dual interfacing : one with Qt giving all possibilities to customize plugins, one with boost delivering only the basics for input dialogs. Thank you for the suggestions about the signals/slots, I probably would have overlooked that :).