When the object of a class is created, the constructors of all member
variables are called consecutively in the order the variables are declared,
even if we don't explicitly write them to the initialization list.
* Disables automatic conversions from 8-bit strings (char *) to unicode
QStrings.
* Disables automatic conversion from QString to 8-bit strings (char *).
* Disables automatic conversions from QByteArray to const char * or const
void *.
* Disables automatic conversions from QString (or char *) to QUrl.
* Use QStringBuilder for more efficient string creation.
It make us aware of string and encoding conversions.
* Prevent a possible C++11 range for detach
The solution with Qt>=5.7 is to use the qAsConst() macro.
But the qAsConst macro is just a const_cast to const T&.
* Don't call QByteArray::operator[]() on temporary
Just use the QByteArray::at().
* Adds missing reference in foreach
That's an non non trivial type (QString), using a reference as no drawbacks
and it performs better.
* Use QStringList::constFirst()
Drop QStringList::first(). It's faster and we might avoid detaching a
temporary.
* Don't call QList::operator[]() on temporary objects
It's not what we want. The at operator and QList::value() do the job in the
right way.
* Stops allocating an unneeded temporary container
We were allocating an temporary container (_entries.values(keyCode)) which
implies an extra iteration also.
Now we don't use any temporary container and only perform one iteration.