2015/11/02 23:08、Takanori Murahashi reah.at@gmail.com のメール:
はじめまして。村橋と申します。
GUIのツールをサクッと作ってみたいと思い、Qtを学ぼうと思ったのですが、 恥ずかしながら英語が苦手なため(チュートリアルも英語ですし)ハードルを感じています。 (可能な限り日本語で学びたいと思っています)
日本語の書籍はいくつか出ているものの、どれもQt4のものだったり、Qt Quickのものであったりします。 新しくQt5でQtを始めるにあたり、Qt4のものを購入しても問題ないのでしょうか。 (Qt4 - Qt5間でそれなりの互換性はあると聞きますが、どの程度の違いがあるのか分かっていないので不安です)
違いについての資料です。
Porting Guide | Qt 5.5 http://doc.qt.io/qt-5/portingguide.html
Porting C++ Applications to Qt 5 http://doc.qt.io/qt-5/portingcppapp.html
C++ API changes http://doc.qt.io/qt-5/sourcebreaks.html
Porting from Qt 4 to Qt 5 http://www.kdab.com/porting-from-qt-4-to-qt-5/
Automated porting from Qt 4 to Qt 5 http://www.kdab.com/automated-porting-from-qt-4-to-qt-5/
入門 Qt 4 プログラミングでの違いです。
.pro への追加 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
.cpp への追加 #include <QtGui> #if QT_VERSION >= 0x050000 #include <QtWidgets>
ほとんどは上記修正で Qt 5 でもコンパイルして動かせます。さらに修正が必要なのは 以降の通りです。
chap05/iconeditorplugin、chap19 プラグイン API 変更に対する修正が必要。
chap05/plotter QPixmap::fill(QWidget*, x, y) が非推奨となるだけでなく、 正しく動かなくなっている (ゴミが一面に表示される) ので修正が必要。
chap06/splitter QTextCodec::setCodecForCStrings() が削除されたことへの修正。
chap06/mdieditor QWorkspace が削除されたので MDI で書き換える必要がある。英語版の第二版では 書き換えてある。
chap08/tetrahedron GLUT/glut.h または GL/glu.h をインクルード、GLU をリンクするように修正 する必要がある。 Qt 5 の途中で OpenGL は API が大きく変わっていて古いままでもまだ動くが、 新しい API に書き換えた方がよい。
chap10/citieschap、currencies、regexpparser モデルの reset() が削除されたことへの修正が必要。
chap10/directoryviewer setClickable() を setSectionsClickable() に変更。
chap10/settingsviewer setResizeMode() を setSectionResizeMode() に変更。
chap12/imageconverter、chap18/imagepro QDir::convertSeparators() を QDir::toNativeSeparators() に変更。
chap14/ftpget、httpget、spider QFtp と QHttp が削除されたので Qt 5 用の QFtp と QHttp を別にインストール するか QNetworkAccessManager で書き換える。
chap14/tripserver incomingConnection() の引数の型が int から qintptr に変更。32 ビットでは 変更しなくても動作するが 64 ビットでは動作しなくなる。