You get there because you are calling that constructor in your code.
display("coucou");
that actually calls
display(QString("coucou"));
and QString(const char*) is not something you really should be doing away. http://qt-project.org/doc/qt-5/qstring.html#QString-8.
You can disable stepping into the constructor by not calling it on that line
QString str(QLatin1String("coucou")); // you don't really need QLatin1String
// if you are happy with 'const char*' constructor
display(str);
And now, you no longer get QString constructor on the display() line. Alternatively, make a breakpoint on display() function and instead of Step In, do a Continue.
You are also calling QString copy constructor because your function takes a QString, not a reference or pointer to the actual object. This should be very easy to spot this in a debugger instead of calling it "annoying". So, here's some code that is guaranteed to let you step into display() without anything else,
#include <QDebug>
#include <QString>
void display(const QString &s)
{
qDebug() << s;
}
int main(int argc, char *argv[])
{
QString str(QLatin1String("foo"));
display(str);
return 0;
}
I hope this is now very, very clear.