Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
Open Source KDE

Qt 5.0 Released 161

Posted by Unknown Lamer
from the half-of-common-lisp dept.
sfcrazy writes "The Qt project and Digia, the company behind Qt framework, have released the most awaited C++ framework for developers, Qt 5.0. The company claims it's one of the best releases to date and has invested a significant amount of time behind this release. It's an overhaul of the Qt 4.x series and makes Qt fit for the future." Update: 12/19 17:46 GMT by U L : Major new features include an overhauled graphics layer, full integration of Qt Quick for creating flexible interfaces using Javascript, and increased modularization including the first steps toward de-emphasizing QtWidgets by separating them into their own module.
This discussion has been archived. No new comments can be posted.

Qt 5.0 Released

Comments Filter:
  • by Andy Prough (2730467) on Wednesday December 19, 2012 @12:56PM (#42337989)
    It's the framework for KDE, which is the excellent, fast UI environment I use on my Linux rigs. Apparently a huge number of other projects either use it currently, or have used it in the past, including a number of well-known projects: Amazon Kindle, Google Earth, Adobe Photoshop, MythTV, Rosegarden, Skype, Virtualbox, VLC media player.
  • Re:C++ Standards (Score:5, Informative)

    by N3Roaster (888781) <nealwNO@SPAMacm.org> on Wednesday December 19, 2012 @01:04PM (#42338081) Homepage Journal

    Yes and no. The signals and slots mechanism is still there and it's still using moc, but there's a new connection syntax available that's a lot more C++ like, allows C++11 lambdas in place of slots, and offers compile-time checking of connections that previously would just fail at run time. Won't please the purists, but it's a step in the right direction.

  • by Anonymous Coward on Wednesday December 19, 2012 @01:13PM (#42338159)

    You obviously never programmed with QT then. QT API is generally pleasant to work with in that it's well documented, consistent, and not unnecessarily complex with a decent amount of examples.

    QT is a larger framework because it does quite a bit more then GTK+ and others. In a Linux environment, that ram usage is shared so you can end up using much less ram in the end with multiple programs running on the same large library. This unfortunately is less of an advantage in Windows (where you see much less GTK+ or QT) but QT is split into several libraries meaning that you don't have to attach the entire framework to your code.

    Realistically, QT isn't that large of a library for modern applications. It's definitely not the smallest but ease of programming is something to be said.

    Is GTK+ bad? Never said that, but neither is QT. Simply pick the best library that works for you. For me, QT is definitely one of my top choices (though not always) after working with several frameworks.

  • Signals and slots (Score:5, Informative)

    by zenyu (248067) on Wednesday December 19, 2012 @01:37PM (#42338391)

    You can now use any C++ function as the target of a signal using the new QObject::connect() syntax. This is a huge win because with the new syntax the compiler and linker can check that the connections are valid instead missed connections just causing a run-time error.

    The moc preprocessor is still required for QObject derived classes, mostly for the translation framework and also to provide support for the old signal/slot syntax which is still allowed. Qt5 doesn't require a C++11 compliant compiler, which is a good thing since there aren't yet any fully compliant compilers. I'm sure if there is a Qt6 it will require C++11 and use those features.

    Some of the really cool C++11 features like move constructors aren't necessary with Qt because it's containers implement reference counted copy-on-write, so when you assign a QMap from another QMap no copy is made, and if the old QMap was an rvalue then there is never a need for the copy to be made when the new QMap is modified. One of the big improvements Qt4 made over Qt3 was to make container assignment atomic so this mechanism worked with threaded code and defensive deep copies weren't necessary anymore.

  • by darronb (217897) on Wednesday December 19, 2012 @01:47PM (#42338485)
    Mine, also abandoned. I quickly stopped using the Kindle once it was obvious it was useless for viewing datasheets. http://www.griffin.net/2010/01/hacking-the-amazon-kindle-dx-part-2-qt-and-sudoku.html [griffin.net]
  • Re:C++ Standards (Score:2, Informative)

    by loufoque (1400831) on Wednesday December 19, 2012 @02:06PM (#42338689)

    Let me add that In this particular instance, many is 15 years.

  • by loufoque (1400831) on Wednesday December 19, 2012 @02:07PM (#42338701)

    It's still a moc'ery of C++, if that's what you're asking.
    And it still duplicates everything that's in the standard library, including containers, threads, files, etc.

  • by Vektuz (886618) on Wednesday December 19, 2012 @02:19PM (#42338849)
    On the business software side, there's also well known applications like Autodesk Maya (2011 and above, they switched TO qt recently!), and also the Perforce client (P4V). I'm seeing more and more of it in the internals of "big" apps like that, even if the user is unaware. I have a feeling its partly because of the LGPL side of things opening up more than anything. Although I'm pretty sure autodesk licensed it commercially.
  • by TemporalBeing (803363) <bm_witnessNO@SPAMyahoo.com> on Wednesday December 19, 2012 @03:33PM (#42340015) Homepage Journal

    It's mature and has all the bells and whistles. Only other alternative is WxWidgets...

    What else did you have in mind ?

    Here's the basic group that Qt belongs as part of:

    • Qt
    • Gtk
    • WxWidgets (WxWindows)
    • SDL

    WxWidgets is public domain; and was the first (AFAIK) to do both Signals/Slots and Message Maps for inter-object comms.

    Gtk was originally just MessageMaps, and now also does Signals/Slots; but it also tends to be heavily GNOME centric and rather largely ignored by GNOME in maintaining it - it moves along, but at a snails pace because they're not really paying attention to it (to my understanding from talking to someone in the GNOME community).

    SDL isn't quite as feature complete as any of the others, but can get the job done.

    Qt is really the only first class library in that group, and now reaches even more platforms than ever before. And with Qt embedded, it runs in many devices that you may never have thought of as having run Qt (Microwaves, TVs, Refrigerators, etc.). Qt really is to multi-platform development what Linux is to processors in that respect.

    So in the sense that nothing else is really as feature complete and professional as Qt - yes, it's in its own category. But in reality there are several other major competitors - and all from the FLOSS community at that.

  • Re:How? (Score:5, Informative)

    by TemporalBeing (803363) <bm_witnessNO@SPAMyahoo.com> on Wednesday December 19, 2012 @03:38PM (#42340081) Homepage Journal

    How is Qt still relevant?

    Let's see...

    It's the only multi-platform development kit that is really as feature complete as most platforms.

    It runs on more devices than you'd ever imagine - from small embedded devices to your kitchen appliances to mobile devices to desktops and servers.

    It's what KDE is built on.

    It's what MeeGo/Mer/Tizen/Sailfish are built on.

    It's what Blackberry 10 (BB10) is built on.

    AutoDesk is built on it.

    CiscoVPN is built on it (well, a really old version at least).

    There's plenty more out there; but I'm going to stop there.

  • by Psychotria (953670) on Wednesday December 19, 2012 @04:20PM (#42340799)

    Small correction: wxWidgets isn't public domain. It's licensed under the wxWindows Licence which, as their page states, is like the LGPL but with a few differences.

  • by byuu (1455609) on Wednesday December 19, 2012 @04:25PM (#42340875)

    SDL isn't quite as feature complete as any of the others, but can get the job done.

    That's ... a bit of an understatement. SDL is a frame buffer, audio buffer, and input poller. For writing GUIs, it's about as feature-complete as QPainter. Sure, you can write your own GUI widget library on top of it, but that won't be pleasant for you or your users.

    SDL is more suited for abstracting the platform video/audio/input APIs, and can be used nicely in conjunction with Qt, GTK+, etc.

  • by lengau (817416) on Wednesday December 19, 2012 @04:30PM (#42340953)
    Most people don't know what Qt is, though. They don't realise how much of the software they use [wikipedia.org] uses it.
  • Re:C++ Standards (Score:5, Informative)

    by TemporalBeing (803363) <bm_witnessNO@SPAMyahoo.com> on Wednesday December 19, 2012 @04:44PM (#42341151) Homepage Journal

    It works for any symbol, regardless of its type. This has nothing to do with RTTI.

    The API for plug-ins is platform-specific since there is no standard interface for C++ plug-ins.

    Yes, you could use dlsym() when building the table MOC builds for the connector calls. That's it. That's also a very very small part of what MOC does. That could be done as part of the object constructor...except now you need to store both static compile-time information (the functions you want to add) and dynamic run-time information instead of just the static compile time stuff that MOC generates (in the moc_*.cpp files).

    RTTI does a good bit of the rest of what MOC does. In neither case are they both supported by all platform+compiler combinations that Qt supports.

    Qt5 now allows C++11 lambas in signal/slots; but only if you enable C++11 functionality when you build it - they still support compilers that don't support C++11 lambas.

  • Re:C++ Standards (Score:4, Informative)

    by scorp1us (235526) on Wednesday December 19, 2012 @11:56PM (#42344851) Journal

    First, it's not bastardized. C++11 is the bastardization, because it results in code fragmentation. That wonderful cross platform C++11 function you write can only be targeted by C++11 compilers. Meanwhile in Qt land everything keeps working on your legacy compiler. The fact that it uses compiler macros to accomplish cross-platform cross-compiler interoperability does not lend itself to "bastardization"

    MOC is not ugly, though I would prefer a C# approach of not having to separate it into a H file, but this is more a C++ thing than a Qt thing. I love the QMeta* that allows me to have introsepction at run time (again x-platform) and I can even dynamically create classes. Can C++11 do that? (Well i guess it can if it's using Qt) But they are adding C++11 syntax if you are using a C++11 compiler and want to limit your portability.

Never try to teach a pig to sing. It wastes your time and annoys the pig. -- Lazarus Long, "Time Enough for Love"

Working...