Я использую Qt и QProcess для чтения некоторых данных из других инструментов и их печати в своем приложении. Представьте, например, что это «терминал».
Я обрабатываю данные, используя QProcess::canReadLine() и QProcess:readLine(), и это замечательно. Но некоторые инструменты используют \r для вывода индикаторов выполнения на экран, и это портит мой парсер. Поскольку никогда не бывает строк для чтения, мое приложение просто ждет, пока процесс завершится, чтобы напечатать последнюю строку: многие строки склеены вместе с помощью \r вместо \n.
В любом случае, есть ли способ сказать QProcess, чтобы он также использовал \r в качестве разрыва строки? Я думал о реализации своего подкласса QIODevice, но мне также нужно было бы повторно реализовать QProcess, так что это кажется не оптимальным подходом.
Я подумал об использовании среднего буфера и использовал этот буфер, чтобы сигнализировать «hasLine» моей основной программе. Я бы использовал QProcess::readyRead для заполнения буфера, а затем буфер для заполнения моего основного приложения, но я хотел бы просто сказать Qt, что \r также подходит для разрыва строки. Это возможно?