Qt 4:
(1)界面相关类位于QtGui中;
(2)使用GPL与商业协议;
Qt 5:
(1)对QtGui模块进行了重大调整,界面相关类被转移至该新增的QtWidgets模块中,打印相关类转移至Qt PrintSupport模块中;
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
(2)QtCore调整,比如信号与槽书写格式调整,支持编译器检查;
connect(sender, SINGAL(valueChanged(QString, QString)), receiver, SLOT(showValue(QString))); // Qt 4
connect(sender, &Sender::valueChanged, receiver, &Receiver::showValue); // Qt 5
(3)支持C++11;
(4)内置JSON解析功能;
(5)对模块进行了更精细的划分,分为基础模块和扩展模块(Add-ons);
(6)Qt 5.4 版本开始采用GPL/LGPL与商业协议;
CONFIG += c++11
Qt 6:
(1)下一代QML;
(2)下一代图形;
(3)统一工具库;
(4)C++API增强;
(5)新语言支持,支持WebAssembly;
(6)兼容并改进Qt 5;
Qt 版本选择建议:
建议使用Qt 5(比如Qt 5.14)。因为Qt 4比较老旧,模块化比较粗糙;Qt 6太新不够成熟,而且目前很多Qt 5中的模块被去掉了。