3 ms·
Having recently seen a product move from Qt5 to Qt6, there sure are reasons! Off the top of my head, some of the things that had to be done: Remove every use o
by EliRivers 3y ago
Having recently seen a product move from Qt5 to Qt6, there sure are reasons! Off the top of my head, some of the things that had to be done:
Remove every use of the previous QRegExp class (no longer existed in QT6), which was always bad, and replace it with the similar but slightly different behaving QRegularExpression class. Different enough that it's not just a simple grep.
Rip out huge chunks of XML processing code that used QT5 XML libraries that were outright withdrawn, and replace them with alternatives.
Rewrite some sound generating code to switch away from Qt5 classes that straight up no longer existed, to something else.
Rip out uses of the QT5 web engine classes; I think I recall it was replaced wholesale in QT6, but it was nothing but trouble through its life so there was an outright rewrite of everything using it to just do something non-web instead.
Any others that were outright withdrawn we also must have replaced. Can't remember them all, but here's a list: https://doc.qt.io/qt-6/whatsnew60.html#removed-modules-in-qt-6-0 https://doc.qt.io/qt-6/whatsnew60.html#removed-modules-in-qt...
Some of those have an extended life in a QT6 "QT5 compatability module", but that's clearly not going to get a lot of security and bugfixes and there's no telling when it might vanish.
Lots of very fiddly changes to the Qt metatype system had people trawling through weird and wonderful error messages working out what was going on and how they could replace it.
QT6 demanded to be built under C++17; after switching the compiler to that, there sure was a whole lot of old code that either didn't compile at all, or flashed heavily red when the compiler looked at it, that demanded a rewrite.
All this, and when you're done, you've got something that's probably functionally about the same as what you had beforehand, but the previous version of the software under QT5 had a decade of use testing and this is brand new.
No customer is going to pay for all this effort, so there is very little impetus on anyone to move from QT5 to QT6 if the QT5 version works and updates keep coming. It's only at the end that people are finally forced to make a move.