PDA

View Full Version : Is Qt for us?



jcurru
6th May 2013, 20:09
Hello!

Glad to be here.

I am the coach of a major GIS project (mapping software). A few years ago we started this project. In order to quickly develop it, we used Embarcadero (Borland) IDE, because it was the one I knew best. This approach has been successful because we have a strong product in record time.

However, Embarcadero has severe limitations, and therefore we are think about changing programming environment.

Specifically we have the following problems:

1) We need to generate products for various platforms (Windows, Mac, Linux). Embarcadero has released Fire Monkey, which generates executables for Windows and Mac, but the way it does does not convince us.

2) We constantly find that we need to use open libraries (boost, Cairo, liblas, etc.) that do not compile or partially compiled in Embarcadero. This is actually the main problem.

So we are looking for a development environment that allows us to evolve smoothly. Of the alternatives, we have the impression that Qt might be the best. I enter this forum to ask you to you, if you are so kind, and give me your opinion on whether Qt is what we need. So below I detail our requirements:

1) Multiplatform Development
2) Support for Unicode and multi-language
3) We work with Access mdb using ADO (in Windows), so, is it possible to easily use ADO within Qt? Embarcadero has some great components for it (TADOConnection, TADODataset, etc.) very helpful.
4) We draw graphics using OpenGL. So far we've draw simple lines, filled polygons, etc, but now we want to draw more complex objects such as thick "stippled" lines with antialiasing, SVG objects, quality text, etc.. We have seen some libraries like Cairo and Skia, but they do not draw directly on OpenGL or cannot be compiled by Embarcadero. I do not know if Qt can help us in this task.
5) Full support for boost
6) Powerful development environment that allows creating interfaces with Ribbons, skins and advanced controls.

Thank you very much in advance for your help!
Best regards!

José

amleto
6th May 2013, 20:47
Qt is a c++ library.
Qt Creator is an IDE

You can use either without the other.

1) Qt does not provide cross compilers. Qt Creator is available on multiple platforms
2)-4) yes. Qt has classes to help with translation, OpenGL and ActiveX. Qt is unicode aware.

5) 'support' for boost has nothing to do with Qt - that is down to the compiler, obviously!
6) yes, Qt has lots of ui features.

wysota
6th May 2013, 21:24
1) We need to generate products for various platforms (Windows, Mac, Linux). Embarcadero has released Fire Monkey, which generates executables for Windows and Mac, but the way it does does not convince us.
With Qt you need Qt framework itself built for each of the platforms you want to target -- for most targets binaries are provided so you should be good here. You also need a working toolchain for each of the targets which can either be a cross-compiler or a native compiler ran in a particular platform you're building for (so you need a working Mac installation to build for Mac and a working Windows installation to build for Windows).


2) We constantly find that we need to use open libraries (boost, Cairo, liblas, etc.) that do not compile or partially compiled in Embarcadero. This is actually the main problem.
Qt works with the most standard compilers available -- gcc/mingw, msvc, icc, clang so you can use anything that builds with any of those. Borland compiler is inherently broken and is thus not supported by Qt (and likely many other libraries and frameworks).


1) Multiplatform Development
supported


2) Support for Unicode and multi-language
fully supported


3) We work with Access mdb using ADO (in Windows), so, is it possible to easily use ADO within Qt? Embarcadero has some great components for it (TADOConnection, TADODataset, etc.) very helpful.
Qt can work with ActiveX however the suggested path to access relational databases with Qt is to use Qt's own SQL infrastructure. For Access you'd go through ODBC. For free you get access to other kinds of databases if needed (e.g. on Mac).


4) We draw graphics using OpenGL. So far we've draw simple lines, filled polygons, etc, but now we want to draw more complex objects such as thick "stippled" lines with antialiasing, SVG objects, quality text, etc.. We have seen some libraries like Cairo and Skia, but they do not draw directly on OpenGL or cannot be compiled by Embarcadero. I do not know if Qt can help us in this task.
With Qt you can use OpenGL calls directly or you can overpaint an existing OpenGL scene with Qt's native painting system. Using external libraries for drawing might not be easy or even possible but then you shouldn't need them at all as Qt has similar capabilities in this regard as Cairo.


5) Full support for boost
Qt doesn't mind you using boost in your apps.


6) Powerful development environment that allows creating interfaces with Ribbons, skins and advanced controls.
Ribbons are not cross-platform and are a patented technology thus are not available in Qt. There is a 3rd-party ribbon component available but you have to pay for it separately.

jcurru
7th May 2013, 08:32
Qt is a c++ library.
Qt Creator is an IDE

You can use either without the other.

1) Qt does not provide cross compilers. Qt Creator is available on multiple platforms
2)-4) yes. Qt has classes to help with translation, OpenGL and ActiveX. Qt is unicode aware.

5) 'support' for boost has nothing to do with Qt - that is down to the compiler, obviously!
6) yes, Qt has lots of ui features.

Thanks, amleto.
So Qt is a C++ library, something like the Borland's VCL. That's important ;-)
I thought Qt was an IDE / compiler.
Sounds great. Thanks again!


With Qt you need Qt framework itself built for each of the platforms you want to target -- for most targets binaries are provided so you should be good here. You also need a working toolchain for each of the targets which can either be a cross-compiler or a native compiler ran in a particular platform you're building for (so you need a working Mac installation to build for Mac and a working Windows installation to build for Windows).

Thanks for your answer, wysota. It was very helpfull.


Qt works with the most standard compilers available -- gcc/mingw, msvc, icc, clang so you can use anything that builds with any of those. Borland compiler is inherently broken and is thus not supported by Qt (and likely many other libraries and frameworks).

Ok. So let's start in Windows: I need Windows itself, Qt, an IDE and a compiler, isn't it? Would you recommend IDE and compiler, please?


Qt can work with ActiveX however the suggested path to access relational databases with Qt is to use Qt's own SQL infrastructure. For Access you'd go through ODBC. For free you get access to other kinds of databases if needed (e.g. on Mac).

Mmmm: ODBC is much slower than ADO, but in the other hand is portable. Ok.


With Qt you can use OpenGL calls directly or you can overpaint an existing OpenGL scene with Qt's native painting system. Using external libraries for drawing might not be easy or even possible but then you shouldn't need them at all as Qt has similar capabilities in this regard as Cairo.

That's really interesting. Maybe you can tell me were can I find documentation about the Qt's drawing capabilities?


Qt doesn't mind you using boost in your apps.

Ok: that depends on the compiler.


Ribbons are not cross-platform and are a patented technology thus are not available in Qt. There is a 3rd-party ribbon component available but you have to pay for it separately.

Ok (and I guess that a ribbon application wouldn't be well appreciated by Mac users...)

Thanks again!!

wysota
7th May 2013, 09:23
Ok. So let's start in Windows: I need Windows itself, Qt, an IDE and a compiler, isn't it? Would you recommend IDE and compiler, please?
If you download Qt installation package, it will come with QtCreator as an IDE and MinGW as a compiler (or you can download Qt for MSVC but then you need to have Visual Studio installed).


Mmmm: ODBC is much slower than ADO, but in the other hand is portable. Ok.
You can stick with ADO if you want at the expense of having more complex and unportable code.


That's really interesting. Maybe you can tell me were can I find documentation about the Qt's drawing capabilities?
General (raster) drawing capabilities are described in QPainter docs. How to overpaint OpenGL depends a bit whether you'd like to use Qt4 or Qt5. I don't know what your application is focused on but in certain situations using QtQuick for your UI might also have benefits.

anda_skoa
8th May 2013, 14:12
Just as an additional data point regarding drawing: there is an open source "virtual globe" application called Marble which uses Qt, is available for many platforms (including some mobile devices) and has support for drawing maps, e.g.from OpenStreetMap data
http://marble.kde.org/

This is still just "plain drawing", no OpenGL and already pretty performant.

You can probably check that out as a base of evaluation.

Cheers,
_

jcurru
13th May 2013, 12:06
Still starting...

Well, I see that there are several Qt versions I can start with. For Windows:

Qt 5.0.2 for Windows 32-bit (MinGW 4.7, 650 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, OpenGL, 476 MB) (Info)
Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB) (Info)

We need 64 bits, so we should download the last one.
So, does this mean that we must use VS as IDE?
Or Qt will use only the VS 64 bits compiler?
Is it possible to develop using Qt Creator and compile for 64 bits?

Thanks again!!

Lesiok
13th May 2013, 12:54
You can download Qt sources and build library with Your favorite compiler.

wysota
13th May 2013, 13:48
We need 64 bits
Why is that?

jcurru
13th May 2013, 17:24
Why is that?

Some objects in memory can grow incredibly; wee need more memory.

wysota
14th May 2013, 08:00
Some objects in memory can grow incredibly; wee need more memory.

I suggest you start with 32 bits to avoid having to rebuild Qt in the beginning of your journey. Once you grow more comfortable with Qt, its toolchain and environment, you can try building Qt for 64 bits with the compiler of your choice.

jcurru
14th May 2013, 08:26
Why is that?

In that case there are tree possibilities:

Qt 5.0.2 for Windows 32-bit (MinGW 4.7, 650 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, OpenGL, 476 MB) (Info)

I guess you suggest using the first one, but the last one says something about OpenGL.
OpenGL is a key part of our system, so... what does it mean?

Thanks again

ChrisW67
14th May 2013, 08:34
We need 64 bits, so we should download the last one.
OK.

So, does this mean that we must use VS as IDE?
No, you don't have to use the IDE. However, the only place to get the VS 2012 C++ compiler chain is in Visual Studio so you need that installed (You can use the Express version). You then configure your IDE of choice to run those tools to make/compile/link.

Or Qt will use only the VS 64 bits compiler?
The Qt project only produces pre-compiled 64-bit binaries using that compiler. You can use a VS2010 or Intel compiler to produce 64-bit binaries if you wish. I expect Qt will probably build with a 64-bit MingW also, but I have not tried.

Is it possible to develop using Qt Creator and compile for 64 bits?
Yes. The IDE and the compiler are two separate beasts. Qt Creator is quite capable of switching back and forth between 32-bit and 64-bit targets if the appropriate configuration is done (Kits) and matching Qt builds are present.

anda_skoa
14th May 2013, 08:40
So, does this mean that we must use VS as IDE?

No, this just means that Qt of that package as been built using that compiler.
This is to indicate which compiler will be necessary to build applications using that version of Qt.




Or Qt will use only the VS 64 bits compiler?

Exactly



Is it possible to develop using Qt Creator and compile for 64 bits?


Yes.
Either by configuring QtCreator to use the VS compiler and using the pre-built Qt/64bit or building Qt with MingW in 64bit configuration.

As Wysota said, you an probably start with any Qt version and later rebuild with a 64bit version at a point where you feel comfortable with building Qt yourself and have mastered its tools.

Cheers,
_

wysota
14th May 2013, 10:36
In that case there are tree possibilities:

Qt 5.0.2 for Windows 32-bit (MinGW 4.7, 650 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, OpenGL, 476 MB) (Info)

I guess you suggest using the first one, but the last one says something about OpenGL.
OpenGL is a key part of our system, so... what does it mean?

"OpenGL" probably means that this version of Qt uses native OpenGL drivers as opposed to emulating OpenGL calls with DirectX (ANGLE). This is not that much relevant for you, all the downloads will support OpenGL. If you don't have VS 2010 already installed, I'd suggest the first option -- it has a bundled MinGW compiler so you essentially get a complete devlopement environment in a single package. If you want, you can always switch to VS2010 or VS2012 later. As for the rest of your questions, others have already answered them.

jcurru
14th May 2013, 13:46
Well, the truth is that your answers have satiated my thirst for knowledge about Qt. It's time to get going. And something that brings me closer to Qt has been my first look at this forum, and the friendliness and professionalism you responded to me.

Thank you!

wysota
14th May 2013, 13:49
And something that brings me closer to Qt has been my first look at this forum, and the friendliness and professionalism you responded to me.

We are having better and worse days :)

john_god
17th May 2013, 14:12
In that case there are tree possibilities:

Qt 5.0.2 for Windows 32-bit (MinGW 4.7, 650 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
Qt 5.0.2 for Windows 32-bit (VS 2010, OpenGL, 476 MB) (Info)

I guess you suggest using the first one, but the last one says something about OpenGL.
OpenGL is a key part of our system, so... what does it mean?

Thanks again

You can also check this wiki (http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL) for more information about OpenGL versus ANGLE