В stackoverflow есть несколько «похожих» вопросов, но я не могу их реализовать. В pyqt я пытаюсь направить вывод файла журнала (который обновляется в режиме реального времени) в виджет QTextEdit. Код, который у меня есть до сих пор:
file = QFile('tmp')
fh = file.open(QIODevice.ReadOnly)
stream = QTextStream(file)
while not stream.atEnd():
line = stream.readLine()
self.logTextEdit.append(line)
file.close()
который обрабатывает текущее содержимое, но не любые последующие изменения. В идеале сигнал Qt предупредил бы меня о том, что нужно прочитать другую строку, когда она доступна, и записать ее непосредственно в TextEdit.
QFile
не подает такие сигналы, когда другие изменяют файл. На самом делеQFile
не излучает период никаких сигналов. Да, они у него есть, но он никогда их не излучает. Вы действительно не хотели бы, чтобы это происходило по умолчанию, поскольку во многих системах уведомления об изменении файлов очень дороги, и вы будете платить эту цену за каждый файл, открытый через QFile. На практике это было бы очень, очень плохо. Насколько я понимаю, запуск приложений Qt с большим количеством открытых файлов был бы хорошим отказом в обслуживании на машине, на которой они работают :) - person Kuba hasn't forgotten Monica   schedule 07.03.2014