Hi,

We are getting closer to the point where we integrate the Qt refactor branch. 
What this branch does is that it separates most of Qt's desktop widgets along 
with a number of currently less actively developed modules into their own 
libraries, in accordance with the module maturity list we published earlier 
this year and in line with Lars' blog about the intent of Qt 5. The over all 
goal is to simplify our graphics stack, minimize our platform/device dependent 
layer (lighthouse integration) and make sure QML and OpenGL are prime citizens 
in Qt 5.

These branches are not at feature parity with Qt 4.7 yet, and nor will they be 
for a quite some time. But we want to push the changes into the master codeline 
so that the structure we have mentioned in blogs and other forums gets visible 
in terms of code. 

Currently we have "official" support for single-window, QML 2 based on OpenGL 
on Linux/X11, Linux/XCB, Linux/Wayland and Mac OS X. There is some rudimentary 
support for the same setup on Windows, but it is still work in progress. Our 
stack works on top of Software Mesa (very slow), LLVMpipe (very fast) in 
addition to real OpenGL hardware (usually fastest).

Standard widget based applications still works, but they are not our current 
priority. We will pick this up once the QML 2 stack is more complete. 

We're expecting to merge into master in 1-2 weeks time.

What are the changes in practice?
- code that use widgets need to add "QT += widgets" in their .pro file
- code that includes <QtGui/QLabel> or similar needs to be updated to 
<QtWidgets/QLabel>. The helper script "fixqt4headers" in QTDIR/bin does this 
for you. Run it in the root directory and you are done.
- There is a new suite of OpenGL classes inside QtGUI, named QOpenGLXxx which 
integrates tightly with lighthouse. To keep changes to existing code minimal, 
we decided to keep the existing libQtOpenGL classes pretty much as is without 
any changes, and rather introduce new classes in QtGui for the classes we 
wanted. 
- Printing support has been moved into its own library, libQtPrintSupport. We 
have a long term plan of creating a better printing API, covered 
inhttps://bugreports.qt.nokia.com//browse/QTBUG-19951, so we have spent some 
effort in removing the dependency on the current API's from the "Qt 
essentials". The API is unchanged.


Can I expect any performance changes?
- No. This is about removing a large chunk of code to make our stack simpler to 
maintain and to have smaller footprint. 


What can I plan for?
- In new projects, see if you can use QML 2 instead of QWidgets.
- In new projects, see if you can use QML 2 instead of QML 1.
- In new projects, see if you can use V8 instead of QtScript. (QJSValue and 
QJSEngine classes in libQtDeclarative)
- In new projects, see if you can use OpenGL functionality in QtGui instead of 
libQtOpenGL.so


What does this means for you right away?
- If you upgrade to Qt5 with refactor, you need to update the includes and add 
widgets/script/qtquick1 to your .pro files


What does this means long term?
- None of the existing libraries

I hope this transition will be as painless as possible for everyone. If you 
have further questions, don't hesitate to ask

-
Gunnar
_______________________________________________
Qt5-feedback mailing list
[email protected]
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback

Reply via email to