Slashdot Mirror


Qt 5.5 Released

New submitter mx+b writes: The latest version of Qt, the cross platform GUI toolkit and development platform, is out for all major platforms. Highlights include better 3D, multimedia, and web support, as well as better support for the latest OS X and Windows releases (including Windows 10) and more Linux distributions.

46 of 80 comments (clear)

  1. Re:Web support by UPi · · Score: 2

    Using web technologies to embed rich content into your application is not unheard of. The Steam client comes to mind as an obvious example: most of their UI lives in a webkit container. We do it at the company I work for, because it allows us to release new client and server versions separately. (We have a good reason to do that, not going into details.)

    The alternative is either to launch an external browser and display your application's content there, which is cumbersome and then you end up having to test your application with all the browsers in the world to make sure it's compatible. Yet another alternative is to use a non-webbased rich content widget; in this case you are likely to end up with something inferior AND with a smaller pool of experienced developers to hire from.

  2. Re:Web support by sexconker · · Score: 1

    Web support in apps is for cows, you are all cows, moo?

  3. Modularity by UPi · · Score: 3, Interesting

    QT is modular. This allows them to add features (you call it bloat, but I don't think it means what you think it means), and then it is up to application developers to pick and choose the modules that they want or need.

    The demand for more features is omnipresent, and software developers can either choose to fulfil them one way or another, or lose their market share to someone else who does.

    1. Re:Modularity by DrXym · · Score: 3, Informative

      It's modular but it's still got bloat. I'm writing an application which has a fairly modest UI that has a main window, some tabs and dialogs. The weight of the runtime I have to ship with it - icu*, Qt5core, Qt5Guid.dll, Qt5Widgets runtimes is nearly 38MB. Most of the modular bits with the exception of webkit - (multimedia, networking, OpenGL, SVG etc.) are comparatively lightweight compared to the slab of unavoidable "core" stuff that you need whether you like it or not.

    2. Re: Modularity by Anonymous Coward · · Score: 3, Informative

      QtCore has to handle unicode, so it needs all the information on all defines Unicode characters. Those are huge. That is hardly something that Qt can be blamed for. It tries to use the tables in the OS where possible after all.

    3. Re:Modularity by Kjella · · Score: 4, Informative

      The very page you link to says:

      Some might argue that there might arise a small problem with shipping 27M ICU libraries. If you don't need ICU (http://site.icu-project.org/) you have to recompile Qt with ./configure -without-icu.

      What's ICU?

      Here are a few highlights of the services provided by ICU:

      Code Page Conversion: Convert text data to or from Unicode and nearly any other character set or encoding. ICU's conversion tables are based on charset data collected by IBM over the course of many decades, and is the most complete available anywhere.

      Collation: Compare strings according to the conventions and standards of a particular language, region or country. ICU's collation is based on the Unicode Collation Algorithm plus locale-specific comparison rules from the Common Locale Data Repository, a comprehensive source for this type of data.

      Formatting: Format numbers, dates, times and currency amounts according the conventions of a chosen locale. This includes translating month and day names into the selected language, choosing appropriate abbreviations, ordering fields correctly, etc. This data also comes from the Common Locale Data Repository.

      Time Calculations: Multiple types of calendars are provided beyond the traditional Gregorian calendar. A thorough set of timezone calculation APIs are provided.

      Unicode Support: ICU closely tracks the Unicode standard, providing easy access to all of the many Unicode character properties, Unicode Normalization, Case Folding and other fundamental operations as specified by the Unicode Standard.

      Regular Expression: ICU's regular expressions fully support Unicode while providing very competitive performance.

      Bidi: support for handling text containing a mixture of left to right (English) and right to left (Arabic or Hebrew) data.

      Text Boundaries: Locate the positions of words, sentences, paragraphs within a range of text, or identify locations that would be suitable for line wrapping when displaying the text.

      And much more. Refer to the ICU User Guide for details.

      Not sure exactly how much Qt functionality you'd lose, but it's an optional dependency.

      --
      Live today, because you never know what tomorrow brings
    4. Re:Modularity by angel'o'sphere · · Score: 1

      Erm, then learn to code?
      Compile the libs statically and link only what you need?
      Calling a library/framework bloat because you are an idiot who has no clue is an insult to the men and wemon behind that framework.
      38MB is bloat? Wow, I guess an empty word document has a similar size ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re:Modularity by TheRaven64 · · Score: 1

      38MB sounds only a bit larger than just ICU (31MB on my machine), so Qt isn't adding much there. ICU is used by most GUI frameworks (Microsoft has their own version, but OS X ships it as part of the standard install) and includes things like fast unicode collation (locale-aware sorting is hard!) and fast unicode regular expressions. Most apps that need to work in places that aren't just the English(ish)-speaking parts of North America need most of that functionality.

      --
      I am TheRaven on Soylent News
    6. Re:Modularity by DrXym · · Score: 1

      My, aren't you the patronising one?

    7. Re:Modularity by tao · · Score: 1

      Any sensible distribution contains Qt already, meaning that you don't need to (and shouldn't) bundle Qt with you app. Those 38MB might seem a lot, but if you spread that out over all apps that use Qt (and factor in all non-Qt apps that also uses icu, which nowadays is almost everything) it's basically background noise.

    8. Re: Modularity by DrXym · · Score: 1

      Most desktop OSes would have services that could provide that information and do encodings and transformations between character sets. I don't see that QT needs to ship all of it. Aside from that my app is localizable so I can't do away with the way its implemented either.

    9. Re:Modularity by DrXym · · Score: 1

      It breaks down to about 25MB icu and 13 MB of QT on QT 5.4 on Windows.

    10. Re:Modularity by DrXym · · Score: 1
      I'm developing for Windows first where the general practice is for applications to ship with whatever DLLs they need rather than install them in shared folders, the windows\system directory or somewhere else on the PATH. Otherwise DLL-hell will surely follow.

      Ultimately the application may end up an embedded device, where space is at a premium. In that instance I'll probably have to static link but it depends on licencing issues.

  4. Re:Why do they bother by Gravis+Zero · · Score: 4, Informative

    QT is a huge stinking pile of bloatware. I eschew it.

    You are right, QuickTime is bloatware. However, Qt is well written and you are given the option to build only what you need and which libraries it should use. The render engine is exceptionally flexible too, allowing it to leverage many different methods of rendering. Don't have X? no problem, add a runtime argument (-platform linuxfb) and your qt program will display using the linux framebuffer. Qt also builds for desktops (e.g. Linux, Windows) and embedded systems (e.g. Android, iOS) and is easy to cross-compile for your device of choice.

    if you think GTK+ is slimmer, guess again and check your binaries.

    --
    Anons need not reply. Questions end with a question mark.
  5. One of these days by msobkow · · Score: 1

    One of these days I'll have to get "into" QT. It looks like a great successor to some of the concepts originating with Neuron Data's tools, which I spent a lot of years learning and working with. For now I've been focused on Java server code, but I've never really been a fan of Java for writing client applications, and I've no interest in buying an Android device just so I can stick with Java while working on front-end code.

    No, to me, client side means an actual computer, not a mobile device. And QT hits almost as many platforms as Java does, so it would seem to be an excellent fit for my goals. :)

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:One of these days by angel'o'sphere · · Score: 2

      Java is excellent for client code, first of all we have Swing and if you like to use Groovy: Griffon, a GUI framework, and secondly you have JavaFX the new Java GUI Framework.

      Against Java and for Qt only speak, what you don't want anyway: portability to mobile devices.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:One of these days by msobkow · · Score: 1

      Umm. Yeah.

      And why would someone writing GPL software care about that?

      --
      I do not fail; I succeed at finding out what does not work.
    3. Re:One of these days by Anonymous Coward · · Score: 1

      Nope. LGPL does *not* require you to hand out *your* source code.

      You do have to hand out all changes you did to the Qt code and you do need to provide for a way that enables your users to replace Qt in your application (easy when you dynamically link to Qt, harder -- but still possible -- when you do static linking).

    4. Re:One of these days by spitzak · · Score: 1

      Wrong. The LGPL license of free Qt allows you to keep the source code to your program secret.

      I think it was GPL in the long past but they changed at least 10 years ago.

  6. Re:I suppose it'll have to do by Barsteward · · Score: 1

    yawn... that is getting very old now, can't you think of anything original?

    --
    "The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
  7. Re:I suppose it'll have to do by Barsteward · · Score: 1

    they all have their own versions..

    --
    "The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
  8. Re:Why do they bother by Barsteward · · Score: 1

    " bloatware" is always used by people who don't know what they are talking about.

    --
    "The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
  9. Re:Web support by Gravis+Zero · · Score: 2, Informative

    When I've read "web support" I though "Cool! I will finally get good support to run QT apps on a standard browser".

    actually, you can do that

    But alas, it just means running a Chromium engine embedded in a QT app.

    no, it uses WebKit while Chromium uses Blink, a fork of WebKit.

    Who wants to run web sites in an app nowadays instead of opening them directly in a browser?

    well... if you wrote a web browser in qt you would. what about an RSS feed reader? it has it's uses but it's true it shouldn't be abused.

    --
    Anons need not reply. Questions end with a question mark.
  10. Re:Why do they bother by Gravis+Zero · · Score: 1

    "bloatware" is always said by people who don't know what they are talking about.

    pff! that's a bunch of bloatware!

    --
    Anons need not reply. Questions end with a question mark.
  11. Not just a GUI toolkit by Prien715 · · Score: 5, Insightful

    Qt is not just a GUI toolkit. Doxygen has been using it for years. I do high performance computing and copy-on-write data structures (as Scott Myer suggest a decade ago in "More Effective C++") means I don't have to worry about functions returning references to a std::vector because QVector's copy constructor is O(1) as Scott Myers recommended a decade ago. I have a sane cross-platform cross-DB SQL interface. My strings are Unicode (and copy-on-write).
    Qt allows you to write high performance code but in a style closer to Perl (especially with 11. "Auto" is "my") while enabling a coder to use high performance C code without needing to write fancy interfaces and compile schemes Everything from threading (QtConcurrent is great!) to file access to JSON to regex to is well-documented and the compile errors are sane (see: boost) and the code is terse (also: boost).
    If you're doing serious C++ development with a small team, Qt is the best way to get things done in my experience...and it's also trivial to make a GUI to represent a SQL query.

    --
    -- Political fascism requires a Fuhrer.
    1. Re:Not just a GUI toolkit by cheetah_spottycat · · Score: 1

      Mod parent up! The value of Qt as at a cross-platform c++ platform / enhancement is much undervalued. It is so much more than just part of a Desktop Environiment and the GUI Toolkit reallky is just a small part.

    2. Re:Not just a GUI toolkit by jma05 · · Score: 1

      I don't disagree with anything, but I am just curious: what kind of improvements did you get with C++/Qt stack over say, Java or Scala? (I am assuming you evaluated alternatives) Say, over 2x improvement in performance? Much lower memory utilization?

    3. Re:Not just a GUI toolkit by taupter · · Score: 1

      1. Native appearance is supported since a long ago in Qt, making a Qt program display in an appeasing way no matter what OS it is run on.
      2. No VM.
      3. No garbage collector.
      4. Compiled code. Native speeds. Performance dependent on compiler. Can use MinGW, GCC, MSVC2010-2013, LLVM/Clang. No JNI.
      5. Legacy code. Way easier to port already written code instead of translating it to another language and having to learn everything again and possibly adding new bugs and surely losing time redoing what is already done.
      6. Performance. I've seen benchmarks before defending one and another, but according to my experience, garbage collection has a perceivable negative impact in performance and memory usage. For client doftware it may be neligible, but for data crunching applications a compiled language makes more sense. The stack machine approach in Java is somewhat slow, and the Dalvik approach (register-based) is speedier but not as speed as native code. ART, despite its ahead-of-time approach has a median performance gain of about 15% only according to benchmarks I saw. Native code on Android doing the same workload is between 4x to 10x faster.
      7. Lower level access. I wrote hardware diagnosis software and used C++/Qt. It was portable to Windows, Linux and UEFI firmware. Frankly doing so in Java would be for all practical purposes impossible.
      8. Portability. It's easiers to port a dedicated C++ code to a new platform than porting a JRE to a new platform. Some platforms simply don't (and legally can't) have a JVM.
      9. Personal taste.

      I'm not saying anything against any language at all. Everything has a purpose, and some languages are best fitted to specific environments/purposes/domains. Doing a database-oriented Fortran code or 3D graphics in COBOL will not highlight these languages' strong points. But if you have the knowledge, experience and the language is a tool fit enough to the need in question, then why not?

    4. Re:Not just a GUI toolkit by jma05 · · Score: 1

      I understand all that. I used Qt myself, but just for simple GUIs. I was just wondering what his real world numbers were. I was not challenging him for his choice. I know the micro-benchmarks between native and VM code. I was curious of how things fared in his larger apps. I normally do JVM for long-running server code, but C++11 and onwards is increasingly attractive, although JVM is still a bit simpler to work with, on the whole. I am exclusively interested in his (or anyone else's) real world experiences on the performance differences between JVM HPC code (server VM config) and C++ server code that uses Qt as the main library.

    5. Re:Not just a GUI toolkit by zerojoker · · Score: 1

      Another very important point is deployment. Deploy a Qt application to say, Windows, you ship the needed Qt libs as dll's with your program (installed in the program folder). User installs, and starts the program like a native one.

      Java: Ship a jar (or say exe), and then the user has to first download a JRE. Start your program, and the user has to wait with a startup screen, cause the JRE takes time to load. Horrible end user experience

    6. Re:Not just a GUI toolkit by Prien715 · · Score: 1

      I don't have a direct comparison with my current project, but having worked on other projects in the HPC, it's not 2x. It's more like (O)n vs (O) n log n -- or worse. There was a project I worked on with did feature tracking and at one point, I was asked to save the data for a small project to a DB so another product within our company (team of around 20 on each project) who was working on equivalent functionality in Java. I lazily saved the whole thing for each change which took under a second, but it took 20 seconds to load the same data in Java-land. No matter what feature you tried, it was always dog-slow.
      Think of it this way. You've got a triple nested for loops going over a 3D array of data (very common in vision, etc). So the C/C++ programmer goes in and you can optimize the innermost loop with extreme efficiency -- maybe even to the register level -- but it's rarely needed. Much more common is to simply try and reduce your new/frees to take outside of the loop and if it's really a bear, calling something like CUDA can increase performance dramatically (I've seen over 100x) as there's direct hooks from C++. But in Java/Scala/interpreted language land, you just optimize to the same level.
      90% of your time is usually spent in 5% of your code, so it's really the ability to optimize easily when you need to without resorting to convoluted tricks and hooks into other languages.

      --
      -- Political fascism requires a Fuhrer.
    7. Re:Not just a GUI toolkit by jma05 · · Score: 1

      You can bundle JRE with your jar/exe, if you don't want the user to separately download a runtime. Many Eclipse Rich Client Apps do this. I have done it myself. As someone who used Delphi/C++ Builder and is very used to static linking to a 1-2 MB distributables with no further dependencies, I am not that happy with Qt dll sizes for client apps. Its certainly better than Java, but is quite bloated for native code. All other native solutions are much more compact (Qt of course wins by feature set). Static linking with Qt is possible, but not recommended.

      I was looking for info on Qt server apps. On the server, runtimes aren't a concern. Startup times are also not important for HPC apps with long execution times. What is important is how things go after the startup. JVM does need to set more memory aside for the GC. Micro benchmarks typically put C++ at 1.5-2.0x faster than Java. I wondered how real world performance differs.

    8. Re:Not just a GUI toolkit by jma05 · · Score: 1

      Thanks. That's useful feedback. Obviously, this topic is complicated with several factors to muddy the waters.

      > 90% of your time is usually spent in 5% of your code, so it's really the ability to optimize easily when you need to without resorting to convoluted tricks and hooks into other languages.

      Interestingly, the Python/glue-language philosophy is just the opposite, for exactly the same reasons. Since it is just the 5% of the code that needs optimization, it says: why not write that in C/C++ and the rest in something easier?

      These days, you can get GPU power outside C++. For instance, Theano brings GPU math to Python. I don't have experience with comparing the performance differences between say PyCUDA/jcuda vs straight C/C++ CUDA. The net difference may not be 100x, but C/C++ programmers will certainly tend to do deeper optimizations.

    9. Re:Not just a GUI toolkit by Prien715 · · Score: 1

      why not write that in C/C++ and the rest in something easier?

      I guess that's my point -- it's not easier anymore.

      Python comes with its own problems; it's hard to write object oriented code in a weakly typed language because (1) changing object interfaces means your code appears to work until it suddenly fails during execution (typed languages check at compile time) (2) no IDE can autocomplete methods on an object (because it's impossible to infer the type and thus the impossible to infer the methods able to be called on an object) (3) writing "glue code" is not a 0 effort proposition (not writing any is;)) and the code itself can contain errors.

      With Qt/C++11 it's entirely possbile to write code that is both performant AND readable with less effort than an interpreted language (even one I've been using for over a decade -- yes I'm Perl guy). YMMV.

      --
      -- Political fascism requires a Fuhrer.
  12. Re:Why do they bother by Anonymous Coward · · Score: 1

    QT is a huge stinking pile of bloatware. I eschew it.

    You are right, QuickTime is bloatware. However, Qt is well written and you are given the option to build only what you need and which libraries it should use. The render engine is exceptionally flexible too, allowing it to leverage many different methods of rendering. Don't have X? no problem, add a runtime argument (-platform linuxfb) and your qt program will display using the linux framebuffer. Qt also builds for desktops (e.g. Linux, Windows) and embedded systems (e.g. Android, iOS) and is easy to cross-compile for your device of choice.

    if you think GTK+ is slimmer, guess again and check your binaries.

    I was bored at work and checked libqt5core and libqt5gui vs gdk/gtk. Those two qt5 components amount to ~10 MB vs ~5MB for gdk/gtk. QtQuick probably gets that well over 20MB.

    But you're not going to use either on some Cortex-M MCU anyway, so who cares.

  13. Re:Web support by gbjbaanb · · Score: 1

    I found Wt really interesting, replacing desktop UI controls with their equivalent in HTML ones, passing the data back to the same c++ backend that the desktop would use. I'm sure it'd be a cool thing to replace your QApplication woth WApplication and have it turn into a html5 GUI, but what's the chance the GUI components supported would just be the most basic?

  14. Re:Why do they bother by gbjbaanb · · Score: 1

    sure, but I thought gtk had a dependency on systemd nowadays so you have to count it's, and all its dependants' binary sizes too :-)

  15. Re:Web support by Carewolf · · Score: 3, Informative

    no, it uses WebKit while Chromium uses Blink, a fork of WebKit.

    No, the new web module for Qt called QtWebEngine is based on Chromium, and yes, it is pretty much running a Chromium webview inside your application. It is the cost of having to have a standard web engine that works on all platforms, after Apple became too difficult to work with after Google left.

  16. Re:Expensive!! by Anonymous Coward · · Score: 2, Informative

    You can use the GPL/LGPL versions of Qt. Those options work well for a wide range of users (incl. some that sell proprietary software based on Qt).

    If you need to have a commercial license for your proprietary software and can't affort 4,2k per year and developer, then you got more important problems than whether or not to use Qt;-)

  17. Good for mobile development? by WWE-TicK · · Score: 1

    How well does using Qt for iOS and Android development work? Last I checked, the documentation on how to effectively utilize Qt for this purpose wasn't nearly as informative as using it for it's more traditional use case. I would love to be able to do cross platform mobile development using C++.

    1. Re:Good for mobile development? by taupter · · Score: 1

      Actually it's pretty straightforward. Compile and run. It will deploy to an AVD, an Android device, to virtual and physical iOS devices, all directly from the Qt Creator IDE.

  18. Re:Expensive!! by taupter · · Score: 1

    Well, if you can't addor 4,2k per year and a developer it may mean you're an Indie trying to break even and launch something nice. What is good and all, no prejudice. But some resources that would help an indie developer, as the Qt module that allows in-app purchases, aren't available to low-income developers, despite being the people who would mostly benefit from it. That's why if I was Qt I would add a new payment regimen, similar to what's already done by Unreal Engine and Unity 3D: pay after you earn something. "Do you have an idea? Use Qt Commercial and pay us when you break even!". If the indie project doesn't take off no harm was done (as no money to be earned existed anyway). This way Qt would gain traction and be more popular than how much it already is. A model like this:

    Indie: Pay 5% of your income after you earn $10,000.00
    Commercial: Pay $whatever/year.
    Open Source: Pay nothing but publish the source accorging to GPL/LGPL/whatever.

    Hope some old troll will listen and act accordingly.

  19. Who cares. by Anonymous Coward · · Score: 1

    QT Mobile was a total farce and joke.

    We dumped it after attempting to do a project on it. TOTAL FAILURE.

    NEVER AGAIN will we believe cross platform claims. Total hype, lack of features, total fail.

    1. Re:Who cares. by WWE-TicK · · Score: 1

      I'm sure lots of people would be interested in the details of your experience with Qt Mobile.

  20. Re:Expensive!! by zerojoker · · Score: 1

    Indie: Just use the LGPL version of Qt and pay nothing. At least not until you break even.

  21. Re:Expensive!! by taupter · · Score: 1

    Do you develop mobile apps with in-app purchases using the LGPL version? AFAICT the in-app purchase module is not distributed with the LGPL version. I'd love to be proven wrong.