[Development] Header diff related changes

Heikkinen Jani jani.heikkinen at theqtcompany.com
Mon Jun 8 10:51:08 CEST 2015


Hi all,

I tried to collect "change requests" from header diffs. We need to get needed changes in RC so we need to get needed fixes in really soon, preferably today. 

QtQml:
rename qqmfile.h into qqmlfile_p.h. (Simon Hausman)?

QtGui:
src/gui/accessible/qaccessible.h : 
This is not Qt-like API. The strings are initialised on first use (all of them) 
but they are translated, which means they will not obey a change in 
translation settings.
The old ones can't be fixed now, but we should fix the new ones not to return a 
const reference.we should fix the new ones not to return a const reference. 

On the topic of qpen.h, I am a little concerned about the addition of 
Q_DECL_NOTHROW to the two non-inlined methods QPen(const QPen &pen) and
QPen &operator=(const QPen &pen). Q_DECL_NOEXCEPT should be fine I think, but 
throw() is represented in the C++ mangled name with MSVC.

QtQuickWidgets:
add Q_DECL_OVERRIDE.

QtSerialPort:
Retroactive deprecations are not allowed. Please change the macros to (5,5), 
even if the functions had been marked as deprecated in the documentation.

QtTest:
Q_TESTLIB_EXPORT QString qExtractTestData(const QString &dirName);

This API isn't finished. The function needs to return a QTemporaryDir (which 
implies passing in by output parameter) so that the caller properly cleans up 
the extracted test data.

The rest looks good. I'd have put the qgpu_features function inside the QTest 
namespace, like everything else, though.

QtCore:
I can't tell if the qmetatype.h template magic is binary compatible or not. As 
evidenced by a recent push [1] about the IsGadget flag, it isn't.

I'm going to put a stop to this. qmetatype.h template magic is now frozen as 
of Qt 5.5 and until Qt 6.0, aside from bugfixes or pure additions that do not 
modify existing template classes.

[1] https://codereview.qt-project.org/113652

> +    Q_FLAG(LoadHint)
> +    Q_FLAG(LoadHints)
Do we need both Q_FLAG? That looks like a mistake.

> +// ### Qt6: check if there's a better way
> +class QStringList : public QList<QString>
[...]
> -    inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive);
> -    inline int removeDuplicates();
The above works only because:
 1) QStringList is not exported
 2) the functions in question are inlines

However, if someone derives from QStringList and exports a class, using MSVC, 
then this may be binary incompatible. See qvector_msvc.h.

QtNetwork:
> +    // EC settings.
> +    QVector<QSslEllipticCurve> ellipticCurves() const;
> +    void setEllipticCurves(const QVector<QSslEllipticCurve> &curves);
> +    static void setDefaultEllipticCurves(const QVector<QSslEllipticCurve>
> &curves); +    static QVector<QSslEllipticCurve> defaultEllipticCurves();
> +    static QVector<QSslEllipticCurve> supportedEllipticCurves();
> +

These should be in QSslConfiguration, not QSslSocket.

Best regards,
Jani Heikkinen
Release Manager | The Qt Company

The Qt Company / Digia Finland Ltd, Elektroniikkatie 10, 90590 Oulu, Finland
Email: jani.heikkinen at theqtcompany.com | Mobile: + 358 50 48 73 735
www.qt.io |Qt Blog: http://blog.qt.digia.com/ | Twitter: @QtbyDigia, @Qtproject Facebook: www.facebook.com/qt





More information about the Development mailing list