Russian Qt Forum
Апрель 30, 2024, 04:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Хитрый способ визуализации содержимого файла
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Хитрый способ визуализации содержимого файла (Прочитано 8638 раз)
Raks123
Гость
Хитрый способ визуализации содержимого файла
«
:
Июнь 16, 2012, 18:14 »
У меня возникла проблема: мне нужно как то ухитриться открыть открыть файл. Беда в том, что в файл постоянно (через промежутки в 100-125 миллисекунд) записывается информация. Я кое-что заметил, что если открыть текстовым редактором этот файл, то запись продолжится без каких либо погрешностей. В визуализации я бум бум, да и процесс осложняется тем, что приложение кросс платформенное. Вообще можно ли "вшить" в программу текстовый редактор? Да и как искать текстовые редакторы линуха? Может у кого есть предложение получше?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Хитрый способ визуализации содержимого файла
«
Ответ #1 :
Июнь 16, 2012, 19:04 »
Зачем хитрить и лезть в окно если дверь-то открыта?
Открываете файл в режиме ReadOnly, читаете и загружаете напр в QPlainTextEdit, С определенным интервалом времени (напр 2 сек) проверяете изменилась ли дата или размер файла, если да - перечитываете. Возможно есть способ и лучше, но и этот несложен и неплох. Заметим что изменения зависят от пишущего. Напр есои он кеширует вывод, то добавляться будут большие куски (а не по строке).
Записан
maint
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #2 :
Июнь 16, 2012, 19:04 »
открыть только по чтению и через промежутки читать файл до EOF и писать все это дело на, ну скажем в QListWidget
Записан
Raks123
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #3 :
Июнь 16, 2012, 19:07 »
А режим чтения не будет конфликтовать, если файл в это время открыт только для записи?
Записан
mutineer
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #4 :
Июнь 16, 2012, 21:28 »
Цитата: Raks123 от Июнь 16, 2012, 19:07
А режим чтения не будет конфликтовать, если файл в это время открыт только для записи?
Не должен, но самый лучший способ узнать - попробовать
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Хитрый способ визуализации содержимого файла
«
Ответ #5 :
Июнь 17, 2012, 02:07 »
Здесь может пригодиться QFileSystemWatcher
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #6 :
Июнь 17, 2012, 09:26 »
Watcher не реагирует на изменение размеров файла
Так же на изменение его атрибутов и открытие/закрытие файла.
Однако если его допилить, то будет. Где то даже темка такая была.
Записан
alexman
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #7 :
Июнь 17, 2012, 09:43 »
Цитата: Bepec от Июнь 17, 2012, 09:26
Watcher не реагирует на изменение размеров файла
Так же на изменение его атрибутов и открытие/закрытие файла.
Однако если его допилить, то будет. Где то даже темка такая была.
Тыкни на допиленный вариант?
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Хитрый способ визуализации содержимого файла
«
Ответ #8 :
Июнь 17, 2012, 14:01 »
Цитировать
Watcher не реагирует на изменение размеров файла
QFileSystemWatcher реагирует на модификацию файла и нам этого предостаточно. Не знаю как в Qt 4.8.х, но до 4.6.3 это работало.
Цитировать
The fileChanged()
signal is emitted when a file has been modified
, renamed or removed from disk.
Как уже сказал Igors, здесь есть проблема со стороны буфферизированного вывода (буфер QFile, буфер ОС). Данные не сразу попадут в файл и, как следствие, визуализация лога будет происходить блоками.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #9 :
Июнь 17, 2012, 15:05 »
4.7.x - не работает на изменение/добавление/удаление информации из файла и изменение его атрибутов. Причём повторюсь - не только у меня
Была и темка про это.
Искать... Лень.. Воскресенье...
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Хитрый способ визуализации содержимого файла
«
Ответ #10 :
Июнь 17, 2012, 16:25 »
Цитата: Bepec от Июнь 17, 2012, 15:05
4.7.x - не работает на изменение/добавление/удаление информации из файла и изменение его атрибутов. Причём повторюсь - не только у меня
Была и темка про это.
Вспоминается такая проблема была когда мониторишь директорию. При изменении контента файла directoryChanged не испускался. Как сейчас обстоят дела именно с fileChanged - хз. Было бы неплохо увидеть тред с описанием проблемы и примером. На трекере по этому поводу инфы нет.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Patrin Andrey
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #11 :
Июнь 18, 2012, 08:27 »
Цитата: pastor от Июнь 17, 2012, 16:25
Вспоминается такая проблема была когда мониторишь директорию. При изменении контента файла directoryChanged не испускался.
Никогда им не пользовался, но лично мне показалось бы странным, если бы при изменении контента файла, испускался directoryChanged
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Хитрый способ визуализации содержимого файла
«
Ответ #12 :
Июнь 18, 2012, 14:04 »
Цитата: Patrin Andrey от Июнь 18, 2012, 08:27
Никогда им не пользовался, но лично мне показалось бы странным, если бы при изменении контента файла, испускался directoryChanged
Это написано в документации, никакой отсебятины:
Цитировать
void QFileSystemWatcher::directoryChanged ( const QString & path ) [signal]
Цитировать
This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added,
modified
or deleted) or removed from disk.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
Re: Хитрый способ визуализации содержимого файла
«
Ответ #13 :
Июнь 18, 2012, 18:32 »
Суть проблемы проста - нужно мне как то было отследить изменение размеров файла и их появление (тырилку видео с сайтов, простейшую). Соответственно ставил watcher на папку кеша и ждал, когда 1 из файликов начнёт увеличиваться
Ну и до тех пор, пока он не прекратит толстеть
В результате - сигнал был только при появлении файлов. При удалении, модифицировании и увеличение размера была тиш да благодать. Пришлось чуть смухлевать и свой класс накарябать на это ориентированный.
PS исходники Qt я пока не трогаю - боюсь
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Хитрый способ визуализации содержимого файла
«
Ответ #14 :
Июнь 18, 2012, 19:10 »
Да, с этим была проблема и исправлять это не думают. Остановились лишь на том, что это недочет в документации по сигналу directoryChanged. fileChanged сигнал должен работать как ожидается.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...