Qt 4.7 provides many improvements and enhancements over the previous releases in the Qt 4 series. This document covers the most important features in this release, separated by category.
A list of other Qt 4 features can be found on the Qt 4 的新功能 页面。
Qt 4.7 introduces Qt Quick , the Qt UI Creation Kit. that enables the creation of dynamic user interfaces, easier and more effective than possible with existing UI technologies. This UI Creation Kit consists of three technologies:
Bearer Management controls the connectivity state of the system. The new Bearer Management API in the QtNetwork module allows the application to identify whether the system is online and how many interfaces there are, as well as start and stop interfaces, or roam transparently between access points.
QNetworkAccessManager uses this API for HTTP level roaming.
The QGraphicsWebView class has a new tiled backing store, which improves scrolling and zooming performance. You can even create animated zoom-in or zoom-out effects (see QWebSettings::TiledBackingStoreEnabled ).
On mobile platforms, it is often useful to avoid displaying separate scrollbars for iframes and framesets. If you switch on frame flattening, QtWebKit will resize frames to fit their content to avoid separate scrollbars (see QWebSettings::FrameFlatteningEnabled ).
Qt 4.7 adds support for accelerated compositing, which enhances the performance of CSS animations and transitions. Read more in this blog .
For hybrid QtWebKit and C++ projects, Qt 4.7 has added support for transporting QPixmap s between Qt C++ and WebKit . We have also improved the documentation for hybrid development. Read more here: The QtWebKit Bridge .
We have introduced a set of performance benchmarks for QtWebKit , and made numerous improvements in rendering performance, page loading performance, scrolling performance and CSS performance. Here are some examples from the benchmarks run on a 64-bit Linux workstation with the raster graphics system.
In a benchmark that measures the scrolling performance on popular websites, we found out that Qt 4.7.0 on this platform is 350% faster than Qt 4.6.0, thanks to several rendering related improvements.
Our page loading benchmark shows an improvement of 16% in Qt 4.7.0 from Qt 4.6.0. This is due to improvements in text layout speed, image decoding, resource loading and event handling.
Several CSS animation benchmarks indicate a speed improvement of 31% from Qt 4.6.0 to Qt 4.7.0. These benchmarks are effectively showing the improvement we get from accelerated compositing (see above).
除了 QtWebKit module, performance has been a focus area in Qt 4.7 throughout the Qt framework. Here are a couple of examples about performance related feature improvements.
On Mac OS X, Qt now uses a different widget implementation (called "alien widgets"), which improves the responsiveness of applications that have complex user interfaces with several widgets.
Qt 4.7 introduces the QStaticText class, which can be used to improve text rendering performance. More info is available from this blog .
The QPainter class has a new API for rendering pixmap fragments ( QPainter::drawPixmapFragments ), which can improve the rendering performance of applications that need to render pixmap fragments .
Qt 4.7 has an updated version of the JavaScriptCore engine for the QtScript module, which improves JavaScript execution performance.
Links to new classes, elements, functions, macros, and other items introduced in Qt 4.7.
类 VideoWidget :
| QImage | snapshot () const |
类 QWebFrame :
| void | pageChanged () |
| void | scrollToAnchor (const QString & anchor ) |
类 QTextCodec :
| QTextDecoder * | makeDecoder (ConversionFlags flags ) const |
| QTextEncoder * | makeEncoder (ConversionFlags flags ) const |
类 QProcess :
| QString | nativeArguments () const |
| void | setNativeArguments (const QString & arguments ) |
类 QVariant :
| QEasingCurve | toEasingCurve () const |
类 QState :
| QList<QAbstractTransition *> | transitions () const |
类 QByteArray :
| QByteArray & | replace (int pos , int len , const char * after , int alen ) |
| QByteArray & | setRawData (const char * data , uint size ) |
类 QChar :
| bool | isHighSurrogate (uint ucs4 ) |
| bool | isLowSurrogate (uint ucs4 ) |
| bool | requiresSurrogates (uint ucs4 ) |
类 QDateTime :
| QDateTime | currentDateTimeUtc () |
| qint64 | currentMSecsSinceEpoch () |
| QDateTime | fromMSecsSinceEpoch (qint64 msecs ) |
| qint64 | msecsTo (const QDateTime & other ) const |
| void | setMSecsSinceEpoch (qint64 msecs ) |
| qint64 | toMSecsSinceEpoch () const |
类 QList :
| void | reserve (int alloc ) |
类 QLocale :
| Qt::LayoutDirection | textDirection () const |
类 QString :
| QString & | setRawData (const QChar * unicode , int size ) |
类 QDBusMessage :
| bool | autoStartService () const |
| void | setAutoStartService (bool enable ) |
类 QFileSystemModel :
| void | directoryLoaded (const QString & path ) |
类 QWizard :
| void | pageAdded (int id ) |
| void | pageRemoved (int id ) |
| void | setSideWidget (QWidget * widget ) |
| QWidget * | sideWidget () const |
类 QGraphicsItem :
| void | updateMicroFocus () |
类 QGraphicsObject :
| void | updateMicroFocus () |
类 QGraphicsScale :
| void | xScaleChanged () |
| void | yScaleChanged () |
| void | zScaleChanged () |
类 QIcon :
| QString | name () const |
类 QIconEngineV2 :
| QString | iconName () |
类 QImage :
| int | bitPlaneCount () const |
| const uchar * | constBits () const |
| const uchar * | constScanLine (int i ) const |
类 QPixmap :
| bool | convertFromImage (const QImage & image , Qt::ImageConversionFlags flags = Qt::AutoColor) |
| bool | isEmpty () const |
类 QColor :
| bool | isValidColor (const QString & name ) |
类 QPainter :
| void | drawPixmapFragments (const PixmapFragment * fragments , int fragmentCount , const QPixmap & pixmap , PixmapFragmentHints hints = 0) |
| void | drawStaticText (const QPointF & topLeftPosition , const QStaticText & staticText ) |
| void | drawStaticText (const QPoint & topLeftPosition , const QStaticText & staticText ) |
| void | drawStaticText (int left , int top , const QStaticText & staticText ) |
类 PixmapFragment :
| PixmapFragment | create (const QPointF & pos , const QRectF & sourceRect , qreal scaleX = 1, qreal scaleY = 1, qreal rotation = 0, qreal opacity = 1) |
类 QPrinter :
| int | copyCount () const |
| void | setCopyCount (int count ) |
| bool | supportsMultipleCopies () const |
类 QTextDocument :
| void | clearUndoRedoStacks (Stacks stacksToClear = UndoAndRedoStacks) |
类 QTextCursor :
| bool | keepPositionOnInsert () const |
| int | positionInBlock () const |
| void | setKeepPositionOnInsert (bool b ) |
| void | setVerticalMovementX (int x ) |
| int | verticalMovementX () const |
类 QTextLine :
| qreal | horizontalAdvance () const |
类 QTextBlock :
| Qt::LayoutDirection | textDirection () const |
类 QLabel :
| int | selectionStart () const |
| void | setSelection (int start , int length ) |
类 QPlainTextEdit :
| QString | anchorAt (const QPoint & pos ) const |
类 QToolBar :
| void | visibilityChanged (bool visible ) |
类 QAudioDeviceInfo :
| QList<int> | supportedChannelCounts () const |
| QList<int> | supportedSampleRates () const |
类 QAudioFormat :
| int | channelCount () const |
| int | sampleRate () const |
| void | setChannelCount (int channels ) |
| void | setSampleRate (int samplerate ) |
| QNetworkConfiguration | activeConfiguration () const |
| QNetworkConfiguration | configuration () const |
| NetworkAccessibility | networkAccessible () const |
| QNetworkReply * | sendCustomRequest (const QNetworkRequest & request , const QByteArray & verb , QIODevice * data = 0) |
| void | setConfiguration (const QNetworkConfiguration & config ) |
| void | setNetworkAccessible (NetworkAccessibility accessible ) |
类 QNetworkRequest :
| 优先级 | priority () const |
| void | setPriority (Priority priority ) |
类 QAuthenticator :
| QVariant | option (const QString & opt ) const |
| QVariantHash | options () const |
| void | setOption (const QString & opt , const QVariant & value ) |
类 QTcpServer :
| void | addPendingConnection (QTcpSocket * socket ) |
类 QGLFormat :
| int | majorVersion () const |
| int | minorVersion () const |
| OpenGLContextProfile | profile () const |
| void | setProfile (OpenGLContextProfile profile ) |
| void | setVersion (int major , int minor ) |
类 QGLShader :
| bool | hasOpenGLShaders (ShaderType type , const QGLContext * context = 0) |
类 QGLShaderProgram :
| GLenum | geometryInputType () const |
| GLenum | geometryOutputType () const |
| int | geometryOutputVertexCount () const |
| int | maxGeometryOutputVertices () const |
| void | setAttributeArray (int location , GLenum type , const void * 值 , int tupleSize , int stride = 0) |
| void | setAttributeArray (const char * name , GLenum type , const void * 值 , int tupleSize , int stride = 0) |
| void | setAttributeBuffer (int location , GLenum type , int offset , int tupleSize , int stride = 0) |
| void | setAttributeBuffer (const char * name , GLenum type , int offset , int tupleSize , int stride = 0) |
| void | setGeometryOutputType (GLenum outputType ) |
| void | setGeometryOutputVertexCount (int count ) |
| void | setUniformValue (int location , const GLfloat[2][2] value ) |
| void | setUniformValue (int location , const GLfloat[3][3] value ) |
| void | setUniformValue (const char * name , const GLfloat[2][2] value ) |
| void | setUniformValue (const char * name , const GLfloat[3][3] value ) |
类 QScriptEngine :
| QScriptValue | evaluate (const QScriptProgram & program ) |
| void | reportAdditionalMemoryCost (int size ) |
| const char * | benchmarkMetricName (QBenchmarkMetric metric ) |
| const char * | benchmarkMetricUnit (QBenchmarkMetric metric ) |
| void | setBenchmarkResult (qreal result , QBenchmarkMetric metric ) |
| uint | qHash (const QUrl & url ) |
| enum | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
| enum | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
| enum | 属性 { HttpStatusCodeAttribute, HttpReasonPhraseAttribute, RedirectionTargetAttribute, ConnectionEncryptedAttribute, ..., UserMax } |
| enum | LoadControl { Automatic, Manual } |
| enum | Priority { HighPriority, NormalPriority, LowPriority } |
| enum | PixmapFragmentHint { OpaqueHint } |
| enum | QBenchmarkMetric { FramesPerSecond, BitsPerSecond, BytesPerSecond, WalltimeMilliseconds, ..., Events } |
| typedef | VideoWidgetInterfaceLatest |
| typedef | const_iterator |
| typedef | const_pointer |
| typedef | const_reference |
| typedef | difference_type |
| typedef | iterator |
| typedef | pointer |
| typedef | reference |
| typedef | size_type |
| typedef | value_type |
|
|