You could use QFile rather than std::fstream.
QFile file(qString);
Alternatively convert the QString into a char* as follows:
std::ifstream file(qString.toLatin1().data());
The QString is in UTF-16 so it is converted toLatin1() here but QString has a couple of different conversions including toUtf8() (check your file-system it may use UTF-8).
As noted by @0A0D above: don't store the char* in a variable without also getting a local copy of the QByteArray.
char const* fileName = qString.toLatin1().data();
std::ifstream file(fileName); // fileName not valid here.
This is because toLatin1() returns an object of QByteArray. As it is not actually bound to a variable it is a temporary that is destroyed at the end of the expression. Thus the call to data() here returns a pointer to an internal structure that no longer exists after the ';'.