18
Qt5の新機能 (地味編) 朝木卓見 1

Qt5 の新機能 2012/12/15

Embed Size (px)

DESCRIPTION

2012/12/15の「年末恒例 #QtJP #MeeGoJP #KDE #TizenJP #FirefoxOSJP #LinaroJP 超勉強会2012」用に作成した資料です。

Citation preview

Qt5の新機能(地味編)朝木卓見

1

Qt5 の現状

•Qt 5.0.0 RC2 2012/12/14 リリース

•正式リリースは来週!?

2

•Qt Quick 2

•OpenGL・シェーダー

•などが目立つ

•今回はそれ以外

Qt5というと

33

Qt5の特徴の一つ

• 99%のソースコード互換性

• pro/ヘッダーの書き換えは含まれず

• qtbase/bin/fixqt4headers.pl

•Qt5でリコンパイルする価値はある?

4

Qt5 API

Qt5Qt4とQt5

変化無し

APIに変化無し内部は変化

APIも違う新機能

Qt4 API

Qt4

廃止予定

5

99%のソース互換性

•変える必要の無かったメソッド

•改善された新クラスが存在

•旧クラスの利用は非推奨

• APIは変えてないが内部実装が異なる

6

変える必要の無かったクラス

•おそらくそのまま使える

•ソース互換性

•ビヘイビア(挙動)互換性

•新クラスがある場合も

7

同等の新クラスが存在

•旧クラスのメンテはいつまで?

•新クラスへの移行の負荷は?

8

内部実装が異なる

• ex.

•QWidget ...

•Unicode関連

•必要な機能が本当に同じかチェックを

9

Unicode

•Unicode 6.2 へ更新(Qt4.8は5.0)

• ICUをデフォルトで使用

• (International Components for Unicode)

• CJK系コーデックを置き換え

•UNICODEMAP_JP に非対応

•QLocale, QDateTimehttp://qt-project.org/wiki/Qt-5-ICU

10

その他locale関連

•削除

• codecForCString() / setCodecForCString()

• codecForTr() / setCodecForTr()

•その他

•QTimeZone

•UTF8以外を使う場合は更に注意を

11

正規表現• 従来(Qt4)

• QRegExp(Qt独自実装)

• Qt5で追加

• QRegularExpression(PCRE)

• 高速化、高機能、問題・制限の解消

• メンテナンスコスト低減

• 今後はこちらの利用を推奨http://qt-project.org/doc/qt-5.0/qtcore/qregularexpression.html

12

JavaScript Backend

• V8 JavaScript エンジン

•QMLに利用

•QtScriptの置き換えではない

• publicなQt用APIは用意されていない

•QtWebKitはJavaScriptCoreのまま

13

QWidget

•QtGUIから独立したQtWidgetsモジュール

•QWidget系自体の変化は大きくない(?)

•描画システムがQPAに変更

•ネイティブダイアログ、フォント、etc.

•結果として挙動が変化する可能性

14

WebKit

•WebKit2へ

•プロセス分離でUIレスポンス改善

•QtWebKitとQtWebKitWidgetsへ分離

•機能、速度、メモリ等が改善

•現状では制限あり

15

Qt Quick

•Qt Quick 1 と 2 は別物

•QML文法以外は全面的に変更

•Qt5ならQt Quick 2を使うべき

16

C++11対応

•新しいシグナル・スロットの文法

• connect(button, &QPushButton::clicked, this, &MyWidget::doSomething);

•ラムダ関数

• connect(widget, &MyWidget::signal(), [](){ qDebug(“lambda”); });

• etc.

17