460
\page qt4-6-intro.html
461
\title What's New in Qt 4.6
463
Qt 4.6 provides many improvements and enhancements over the
464
previous releases in the Qt 4 series. This document covers the
465
most important features in this release, separated by category.
468
A comprehensive list of changes between Qt 4.5 and Qt 4.6 is
469
included in the \c changes-4.6.0 file
470
\l{http://qt.nokia.com/developer/changes/changes-4.6.0}{available
471
online}. A \l{Known Issues in 4.6.0}{list of known issues}
472
for this release is also available.
474
Changes between this release and the previous release are provided
475
in the \c{changes-4.6.0} file (also
476
\l{http://qt.nokia.com/developer/changes/changes-4.6.0}{available online}).
479
A list of other Qt 4 features can be found on the \bold{\l{What's
486
\section1 Support for Symbian
488
Qt 4.6 is the first release to include support for the Symbian
489
platform, with integration into the S60 framework. The port to
490
Symbian and S60 provides all functionality required to develop
491
rich end-user applications for devices running S60 3.1 and
494
\section1 Animation Framework
496
The animation framework helps build highly animated,
497
high-performance GUIs without the hassle of managing complex
498
structures, timers, and easing curves, not to mention the large
499
state graphs that all animated GUIs tend to be full of.
501
The framework makes it easy to animate \l{QObject}s, including
502
QWidgets, by allowing Qt properties to be animated. It also allows
503
creating custom animations and interpolation functions. Graphics
504
views are not left out; one can animate \l{QGraphicsWidget}s and
505
new \l{QGraphicsObject}s which inherit from QGraphicsItem
506
(and thereby enable properties).
508
Animations are controlled using easing curves and can be grouped
509
together. This enables animations of arbitrary complexity.
511
The API is easy to grasp with functions such as start(), stop(),
512
pause(), and currentTime(). Here is an image from one of the
513
examples that come with the framework:
515
\image whatsnewanimatedtiles.png
517
The animation framework also plugs into the new Qt Statemachine by
518
allowing an animation to be played when transitions are triggered.
519
The state machine framework is introduced in 4.6 and is described
522
See \l{The Animation Framework} documentation for more information.
524
\section1 State Machine Framework
526
The state machine framework provides a robust state chart
527
implementation based on Harel statecharts and SCXML. Qt's API lets
528
you construct such state graphs and execute them. The key benefits
529
of a state machine are:
532
\o Simplify complex application semantics.
533
\o Use of states to reduce code bloat.
534
\o Use states to improve maintainability.
535
\o Makes event-driven programming robust and more
539
It is especially the last item here that makes using a state
540
machine worthwhile. A key characteristic of event-driven systems
541
(such as Qt applications) is that behavior often depends not only
542
on the last or current event, but also the events that preceded
543
it. With statecharts, this information is easy to express.
545
The framework fits neatly into Qt by allowing transitions to
546
trigger on signals and \l{QEvent}s. By inserting animations into
547
the state machine, it is also easier to use the framework for
548
animating GUIs, for instance.
550
See \l{The State Machine Framework} documentation for more infromation.
552
\section1 Multi-touch & Gestures
554
The new multi-touch and gestures support enables user interaction
555
with more than one finger, and combines sequential touch inputs to
560
The main benefits of this new functionality are:
563
\o Allow users to interact with applications in better ways.
564
\o Simplify finger-based interaction with UI components.
565
\o Allowing common basic gestures and multi-touch
567
\o Enable extensibility.
570
See the QTouchEvent class documentation for more information. The
571
Gesture framework API is still subject to change.
573
\section1 DOM access API
575
Web pages and XML both have very complex document object models.
576
The W3C selector API provides a very simple way to access and
577
manipulate such structures. This API makes it intuitive to access
578
DOM, helps reuse CSS selector knowledge, and gives little
579
maintenance or footprint overhead.
582
QWebElement document = frame->documentElement();
583
QList<QWebElement> allSpans = document.findAll("span");
584
QList<QWebElement> introSpans = document.findAll("p.intro span");
587
See the QWebElement class documentation for more information.
589
\section1 Performance Optimizations
591
As always, Qt continuously strive to optimize its performance.
592
For this release, we have:
595
\o Rewritten the QGraphicsView rendering algorithm.
596
\o Made QPixmapCache support efficient Key datastructure.
597
\o Reduced overhead in QNetworkAccessManager.
598
\o Added the QContiguousCache class, which provides efficient caching of
600
\o Added support for hardware-accelerated rendering through
601
\l{OpenVG Rendering in Qt}{OpenVG}
602
\o Removed Win9x support.
605
\section1 Graphics Effects
607
Effects can be used to alter the appearance of UI elements such as
608
\l{QGraphicsItem}s and \l{QWidget}s. A range of standard effects such
609
as blurring, colorizing or blooming is provided, and it is possible to
610
implement custom effects.
615
\o \img graphicseffect-plain.png
618
\o \img graphicseffect-blur.png
619
\o \img graphicseffect-colorize.png
620
\o \img graphicseffect-bloom.png
623
See the QGraphicsEffect class documentation for more information.
625
\section1 XML Schema Validation
627
The QtXmlPatterns module can now be used to validate schemas, either
628
through C++ APIs in the Qt application, or using the xmlpatternsvalidator
629
command line utility. The implementation of XML Schema Validation supports
630
the specification version 1.0 in large parts.
634
See the \l{XML Processing} and QXmlSchema class documentation for more
637
\section1 Qt3D enablers
639
As more of Qt, and more of the applications built on Qt go 3D,
640
API's should be provided to simplify this. Mainly, the new API
641
aims to make it more easy to create 3D applications with OpenGL.
642
It will also unify the Qt OpenGL codebase, and enable
643
cross-platform 3D codebase.
645
The main features of the Qt3D enablers are currently: Math
646
primitives for matrix multiplication, vectors, quaternions
647
(client-side), and API for vertex and fragment shaders, GLSL/ES.
648
Future research will, among other things include stencils,
649
scissors, vertex buffers and arrays, texture manipulation, and
652
\section1 Multimedia Services
654
Qt 4.6 comes with new classes for handling audio. These classes
655
provide low-level access to the system's audio system. By
656
specifying the audio format (QAudioFormat) and supplying audio
657
data through a QIODevice, you get direct access to the
658
functionality of the sound device. The API also comes with
659
functions to query audio devices for which audio formats they
662
See the \l{QtMultimedia Module} documentation for more information.
664
\section1 Classes, functions, and other items introduced in 4.6
666
Links to classes, function, and other items that were added in
438
674
\page qt4-5-intro.html
439
675
\title What's New in Qt 4.5