[KDE Dot News]
 faq
 flatforty
 contribute
 subscribe
 configure
 search
 rdf

 main


  Kastle 2003: What to expect from Qt 4
Qt Posted by binner on Monday 25/Aug/2003, @23:55
from the revealed-to-eager-public dept.
On Saturday evening Matthias Ettrich, director of Qt development, gave within a talk at the KDE Developers' Conference 2003 in Nové Hrady -- besides a presentation of the company, the KDE/FreeQt Foundation and the past and present of the Qt development toolkit -- an outlook on Qt 4. Qt 4 is expected to be released in 2004 and promises to deliver increased performance, both at startup and runtime, more flexibility and productivity and changes to ease the learning process. Read more excerpts from the slides shown with the help of Matthias' home-brewn presentation program.

Qt 4 mostly tries to preserve source-compatibility with a little search and replace and a COMPAT compilation switch. More porting will be required for styles and code that uses the meta object system directly.

The increased startup performance will be reached through reduced number of symbols, less read/write data and fewer static initiliazers. Fewer mallocs, faster and more optimised tool classes and reduced memory consumption will improve the runtime performance enabling Qt 4 to run on embedded devices that are slower and have less memory than today's desktop computers too.

To back up these statements Matthias gave some numbers about Qt Designer which was ported to Qt 4 with only the necessary changes to make it compile: The libqt size decreased by 5%, Designer num relocs went down by 30%, mallocs use by 51%, and memory use by 15%. The measured Designer startup time went down by 18%.

Qt 4 will not be one library, but consists of many allowing finer granulation:

  • Qt Kernel lib comprising tool, io, thread classes and QObject/QKernelApplication
  • Qt GUI lib with QApplication, widgets, painter
  • Others libs for network, XML, SQL, openGL and other purposes

Included among the presented planned features of Qt 4 as of today are:

  • Designer split up into components. This makes it possible to create a form editor plugin for KDevelop.
  • Model/view classes for list box, tree view, icon view and table
  • New set of classes as part of a main window/docking architecture that distinguish between dockwindows and toolbars with support for tabbed docks.
  • Accessibility support for the Macintosh platform and for ATK.
  • Pixmap resource system
  • Several API cleanups like unifying different APIs and reducing number of concepts aim to simplify common usage, increase flexibility and remove embarassements.
  • New meta object code with static read-only data block (no constructors, no cleanup handlers, no relocations, no symbols) with significantly less generated code and minimal connect() memory overhead.
  • Better connect() syntax
  • New cast qt_cast(const QObject*) makes string-based QObject::inherits() obsolete.
  • A new class QPointer, which is successing QGuardedPtr, is lighter and faster.
  • The event filters were fixed and are now called from QApplication::notify() instead from QObject::event()
  • The threaded library will be the default with more thread-safety/reentrancy. Atomic refcounting makes QDeepCopy superfluous.
  • In the styles section the palette and background handling has been revised: A backgroundPolicy was introduced with non-toplevel widgets inheriting their background (policy) from the parent widget. Parents can propagate their content to child-widgets. This shall essentially give (semi)transparency for widgets. And last but not least system-wide double-buffering will allow flicker free update without any hacks at all.

Qt 4 will introduce a new consistent set of light, safe and easy to use value based container tool classes which are implicitly shared and highly optimised, both for speed and memory usage. Using them will expand to less code compared to Qt 3.x and STL which will stay available for further usage together with Qt.

QString and QByteArray were both optimised for performance and memory usage besides API improvements. An important change is that isNull() is dead and will be only available in compatibility mode. Functions like latin1() will always return a valid and never a null pointer. This change led to quite some discussion and aversions among the KDE developers but Matthias pointed out that there still will be isEmpty() and operator!().

Qt 4 shall be available within a year, with a short public Beta period next year before the final release. Among the open questions Matthias addressed to the KDE developers were if KDE will switch to Qt 4 and if so when, when KDE switches who does the initial port and where, and will KDE use the opportunity to refactor some of its architecture too? In return many KDE developers will, during the hackfast week, ask Trolltech developers for additions of classes and functionality which they find long-term missing and required by KDE.

<  |  >

 

  Related Links
 ·   Articles on Qt
 ·   Also by binner
 ·   Contact author

Thread Threshold:

The Fine Print: The following comments are owned by whomever posted them.
( Reply )

Over 40 comments listed. Printing out index only.
Homebrewn?
by trynis on Tuesday 26/Aug/2003, @01:12
Why didn't Matthias use kpresenter?
[ Reply To This | View ]
kool
by whatever on Tuesday 26/Aug/2003, @01:40
>> # New set of classes as part of a main window/docking architecture that distinguish between dockwindows and toolbars with support for tabbed docks.

Yeah, better docking support, finally! :)

Will it also have support for creating a 'unified' main window?
eg. When you look at Windows (and I believe OS X) programs you'll see that everything is drawn correctly with no useless or missing bevels, with every Linux program (Qt, Gtk, whatever other toolkit) this has never been the case and it's one of the reasons why many apps still have that geeky look or looking like something's missing (like with KWrite; missing bevel around the text window - another example would be Konqueror; the toolbars and lower views don't flow into each other, it looks like they're patched together).

And about those icon views, will the native Qt views have support for alpha blended icons in Qt4?
(so not the current stippled icons, which look terrible (especially on TFT/LCD monitors))

And lastly, I really hope those double buffered widgets aren't going to make Qt4 slower.. (like happened with Gtk2)
[ Reply To This | View ]
What happened to...
by Bryan Feeney on Tuesday 26/Aug/2003, @03:35
...the component API (Qt's answer to KParts etc.). Has it been shelved till Qt5?

Also according to DE-CVS-Digest for August 22 KDE dialog boxes can now be used outside of KDE apps. Will Qt take advantage of this to blend in a little more? Actually is Qt doing anything on its dialogs, I'm thinking specifically about the Open/Save dialogs. Everyone else has moved (or in the case of GTK is moving) on. They're looking pretty old fashioned now, any work on souping them up.

This is just icing on the cake though, Qt makes programming in C++ a dream, thanks to everyone at Trolltech.
[ Reply To This | View ]
Any RAD improvements?
by Sage on Tuesday 26/Aug/2003, @07:34
While it is great that Trolltech concentrates on improving the core library, I didn't see much that interested me as a commercial developer. Maybe I missed something. As a developer, I am much more interested in productivity features ie improvements in designer, new widgets, alpha support in graphics, a better html help system, more support in cross-compiling, UML, integration with editors or IDE's, etc. RAD and the faster, better, cheaper mantra is not a goal in business today, it's survival and I just don't see anything here that really addresses this issue. Maybe Trolltech believes RAD belongs in the KDevelop and Umbrello projects - and while the work on those projects are impressive, the delivery, support, integration, etc is just lacking for regular commercial use. ie. Gideon has been out in various betas but I still can't get a binary copy for RH9 and don't have time to mess with CVS etc. We need a suite, not necessarily from 1 vendor or project, but that is compatible and works easily together. Bottom line: Library optimizations are good, but for a 50% speed improvement it's easier to buy next month's Intel box - coding productivity is our real bottleneck.
John
[ Reply To This | View ]
"QString::isNull is dead"
by John Levon on Tuesday 26/Aug/2003, @08:11
At last ! I'm very very happy to this moronic niggle in the API finally
go away. I'm also pleased to hear that the library is being split up.

I hope the thread support is faster. Our app spends a significant amount
of time locking and unlocking, but it's not even threaded (qt-mt is often
the only installed version ...)
[ Reply To This | View ]
yahoo!
by anon on Tuesday 26/Aug/2003, @09:10
This is some very interesting news!

Finally, Qt non-GUI is being split from Qt GUI. This will make it easier to use Qt in non-GUI applications under KDE. :-)

Speed increase? Oh yeah! Woohoo.

Accessibility support? I'm a bit skeptical of that one... Who thinks they can do it?
[ Reply To This | View ]
Binary and Source Compatibility
by Simon Edwards on Tuesday 26/Aug/2003, @09:30
I don't want to be a wet blanket, but is breaking source and especially binary compatibility so soon really such a good idea? Optimisation and cleanups are great, but it doesn't strike me as being really important enough to make up for all of the headaches that will come with it. Hell, we can sit on our collective asses and do nothing for a year and Intel/AMD will provide us with a greater than 18% speed up. Binary and packaging compatibility is already a disaster on Linux.

(I thought that a lot of startup problems on Linux had to do with the limp runtime linker. Has anything been fixed on that front?)

--
Simon
[ Reply To This | View ]
And?
by CE on Tuesday 26/Aug/2003, @09:55
> Among the open questions Matthias addressed to the KDE developers were if KDE will switch to Qt 4
> and if so when, when KDE switches who does the initial port and where,
> and will KDE use the opportunity to refactor some of its architecture too?

What about the answers?
[ Reply To This | View ]
QKernelApplication
by Justin on Tuesday 26/Aug/2003, @10:22
Yes!! I have been waiting for the gui / non-gui separation. Finally, using Qt in server applications will become a real possibility. And yes I know of TinyQ, but it lacks QObject (and thus the event loop), which Qt 4 will have in the kernel portion. Good stuff!
[ Reply To This | View ]
Qt event loop lack
by John Robertson on Tuesday 26/Aug/2003, @10:47
The biggest problem with the Qt event loop is that there is only one per application. If you have a multi-threaded program with persistent threads, then it is likely that each thread will need it's own event loop.

I have written my own solution based on sigwait(), but it's a pain in the ass to keep hacking it in to each new version of Qt.
[ Reply To This | View ]
What about SVG support?
by BobCat on Tuesday 26/Aug/2003, @10:51

[ Reply To This | View ]
QT AND KDE/QT INTEGRATION!!!! WHENNNN!!!???
by Alex on Tuesday 26/Aug/2003, @11:20
Okay, this was promised forver now and this has to be one fo the most important things that Trolltech can do for DE developers. On every other platforms upported by Qt, error messages native, file dialogs are native etc. and yet on KDE the platform that is actually freaking built on Qt, we don't even have consistent file dialogs between Qt and KDE!! THIS IS RIDICULOUS! There has to be something done about this as was promised about a year ago!
[ Reply To This | View ]
Qt on DirectFB
by Denis Oliver Kropp on Tuesday 26/Aug/2003, @12:38
You might want to have a look at this new QtDirectFB screenshot:

http://www.directfb.org/screenshots/FirstQt.png

I'm really looking forward to having the KDE libraries independent from QtX11.


Best Regards,
Denis Oliver Kropp
[ Reply To This | View ]
splitting up of the library...
by aleXXX on Tuesday 26/Aug/2003, @12:45
is very nice. Would it be possible to put the core qt lib under LGPL ?
This could make it first choice for portable non-gui tools, no matter which platform, no matter which purpose. And maybe it would make commercial developers more hungry for the other Qt libs :-)

Bye
Alex
[ Reply To This | View ]
Usability
by Alex on Tuesday 26/Aug/2003, @16:57
Okay, just looked at this website: http://usability.kde.org/ What happened here? Why are all teh borders black?!
[ Reply To This | View ]
Needed Features! ?? :-\
by James Richard Tyrer on Tuesday 26/Aug/2003, @20:20
Qt currently needs two features:

1. A font system which works.

2. A PostScript driver which works.

--
JRT
[ Reply To This | View ]
I think they would re-design more things...
by John the anonymous on Wednesday 27/Aug/2003, @01:55
I think that in this new major version Trolltech should refactor more things.

* Better STL integration (why not simply drop Qstring!) and follow modern c++ concepts (like namespace support -why should we keep decorating class names!- )
* Use C++ prepocessor capabilities. Why keep using a signal/slot system based on moc when you can do that with C++ templates in a more efficient way? Most of required things (serializing, type checking, ...) could be done in compile time (not with dinamic metaobjects like java) so it would be faster and smaller (yes, I know that not so frecuently used things like object inspection would require a dynamic version but it can be also done with c++ templates)
* Improve the GUI capabilities. The 3 generation desktops support avanced vector primitive rendering. For example, Mac OS X has a PDF-like rendering API very powerful to the developer; it can be HW accelerated and would help to reduce the client-server volume of data interchanged. The traditional fixed point QPainter/Qfont api is becoming very limited for new SW projects in KDE like Kword or KSVG (and new solutions are being proposed like Kpainter). And 3D graphics are the future! Maybe it's the moment to introduce some high level code (not only QGLWidget) -basic scene managers, ...- to test this market ;-)
* Better network and distributed processing orientation. Haven't Trolltech introduced a scripting system? They also have a xml language describing GUIs and a library supporting dynamic created interfaces -libqtui? used in qtdesigner-. Why don't encourage developers to create fast cross-platform distributed script applications? It will be similar to mozilla XUL technology, more powerful than DHTML (fast prototypes design, forget .NET!) I think MS is looking for something similar in Longhorn, and the most similar technology in KDE is Kommander (from the Quanta team). I think there is no need for big changes, everything is there (maybe a CSS Qt styles definition to make the whole thing more Web standars compliant)
* And other things I don't remember now (this is a enough long post :-) )


I think these are things that will have to be done someday. My reasons for doing it soon:
* Compatibility is not as critical as perfomance for many users. People who use Qt are looking for a modern C++ library and if these features are present I think version 4 will attract more developers.
* C++ compilers are getting closer to the standard

By the way. Qt really rocks! And more modularization and optimization are good news for the new version at least.

Just my opinion :-)
[ Reply To This | View ]
So when those zillion packages will be moved?
by nobody on Wednesday 27/Aug/2003, @03:12
Just wondering are all those packages in kdenonbeta, kdeextragear-1/2 and kdekiosk on the CVS going to survive during the KDE-3.2 -> KDE-4.0 transfer or are those cleaned up, and if so is there a page to show what programs do get included to the next version of KDE and what will stay or get eliminated?

And yes, the idea of rendering all GUI elements with OpenGL gets my vote as long as xlib, gtk+, SDL, tcl/tk, and other desktop libraries are supported via compability layers... ;-)
[ Reply To This | View ]
RFC: Better Mouse Wheel Support
by Gerold J. Wucherpfennig on Thursday 28/Aug/2003, @01:38
Scrolling a fixed amount of lines is not appripriate
in most cases. You either have to set it to a high
value to get good results with large windows, but then
you scroll more than a whole page in small windows.
Otherwise you need to use a low value to get good results
with small windows, but then your hand aches when you have
to scroll in large windows.

Scrolling a whole page isn't good either, because with large
windows you need to move your eyes from the bottom of the
screen to the top (this is straining).
An other reason why it isn't good is that you won't notice
when you accidentially scrolled two pages instead of one,
because the text you read is not shown any more.

My suggestion is to add configuration option that scrolling
defaults to scroll half a page. I created a patch and sent it
to kde-devel some time ago (for anyone who is interested).
The patch is quite simple. If you set the number of lines to
scroll to 0 (zero) than all qt GUI elements will scroll half
a page.

IMHO something in this regard should be done in QT4.
Does somebody from Trolltech please respond to my suggestions?
That would be great. :-)
[ Reply To This | View ]
QT 3.2.1 RELEASED
by Somebody on Thursday 28/Aug/2003, @12:16
http://www.trolltech.com/developer/changes/changes-3.2.1.html
[ Reply To This | View ]
Have these ISSUES been adressed ;)
by Right... on Friday 29/Aug/2003, @23:48
http://www.suse.de/~bastian/Export/linking.txt

Also, i hope Qt will be easier to sue and use more standard C++ like templates and stop relying so much on the preprocessor.
[ Reply To This | View ]
When on SuSE / What about articles
by Ian Bruntlett on Monday 01/Sep/2003, @05:25
The key distro for KDE based developments in Europe (I'm in the U.K.) is, as far as I know, SuSE Linux.

So, for those of us who aren't fully aware of CVS and aren't happy with installing KDE and KDevelop by hand, when will these developments see the light of days in the latest SuSE Linux?

Also, I'd like to see some articles written about programming in Qt 4. I'm no stranger to writing technical articles myself (see http://www.accu.org/resources/public/terse/overload/UserDefinedTypesQualitiesPrinciplesArchetypes.rtf
as an example, albeit the best ideas were given by the Overload editorial readers).

So I'd volunteer to write some articles about Qt 4 development, given appropriate hand holding (I've got a couple of years commercial C++ development under my belt and 6 years commercial C development).

Ian Bruntlett
ACCU Overload Editorial Reader
[ Reply To This | View ]
qt-mesa-free-4.0.0.tar.bz2
by n/a on Tuesday 02/Sep/2003, @00:00
Just hoping for more 3D-oriented system so there would not be necessary differences between OS and game modes (for future games on Linux).
[ Reply To This | View ]
Support for big desktop with different resolutions
by bednar on Friday 05/Sep/2003, @15:29
I think, that for home users, one of the main disadvantages is lack of support for big desktop on two monitors (like FlatPanel + TVset) with two different resolutions. I have this problem with 17" FlatPanel (1280 x 1024) and TV (800 x 600).
The panel lays at the bottom of destop (1280+800 x 1024), so on the TV the panel and part of image is unreachable. The requesters are centered on the edge of screens (in the middle of desktop width). It is not possible to maximize window to only one screen. There should be one primary (for requesters and panel) and one secondary display (like ine windows XP and 2k).
I am not sure if it is right place to talk about it, because I don't know if the Qt or KDE is responsible for desktop behavior. But the problem is important.

Bednar
[ Reply To This | View ]
Senior Principal Engineer
by Neal D. Becker on Wednesday 17/Sep/2003, @06:14
I believe boost (boost.org) signals template library would be a good basis for replacing the qt signal/slot implementation.
[ Reply To This | View ]
Minor niggle in window handling
by Henrik R Clausen on Tuesday 14/Dec/2004, @15:44
I have one gripe with KDE 3.X or Qt 3.X that might finally get fixed:

When I grab a window edge with the mouse pointer _while_ moving the mouse, I'll often miss. It looks like the mouse position of the click itself is forgotten, and instead the current position is used. On slow computers or under heavy load that might be quite a few pixels wrong.

Why care about such a simple thing? Because it's a usability issue. The percieved reliability is affected by this, it feels wrong that you have to be careful about slowing down to grab something when you otherwise know what you're doing. The two largest (commercial) user interfaces both got this one right.

If I can post this to a Bugzilla somewhere, please point me in the right direction.
[ Reply To This | View ]
The Fine Print: The previous comments are owned by whomever posted them.
( Reply )

  "I'm adding spaces everywhere so that Charles doesn't edit the files." -- Stephan Kulow
KDE®, "K Desktop Environment", "KDE Dot News", "got the dot?" and the KDE Logo® are trademarks or registered trademarks of KDE e.V. in the European Union, the United States and other countries. All other trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the poster. The rest: Copyright © 2000-2008 KDE e.V. for The KDE Project. For further information or comments on this site, please contact the Webmaster.
[ home | post article | flat forty | subscribe | search | rdf ]