Ваше условие неверно:
if (!mapDat.open(QIODevice::ReadOnly) | QFile::Text)
Это попытается открыть файл в режиме только для чтения.Результат этого отменяется (!
), а затем ИЛИ с QFile::Text
(что! = 0).Таким образом, условие всегда будет истинным.
У вас есть простая опечатка (неуместные скобки):
if (!mapDat.open(QIODevice::ReadOnly | QFile::Text))
// ^ Bitwise OR of flags for mapDat.open call