LINUX.ORG.RU

Глобальное окно с логом в Qt

 


0

1

В приложении нужно организовать простое окно с логом доступное из всех частей приложения.

Самый простой способ - это глобальная переменная.

Есть более «правильные» способы?

★★★★

Singleton + QMutex (наверняка, есть намного более Ъ способы, но это - первое, что пришло на ум).

neversleep ★★
()
Последнее исправление: neversleep (всего исправлений: 1)

да есть. создаешь класс наследник от QDialog, рисуешь ему UI как надо. Потом при необходимости

MyDialog dia; dia.exec();

и не надо синглтоны и прочую ересь.

MikeDM ★★★★★
()

ИМХО, логи и конфиги – чуть-ли не единственная причина использовать глобальные переменные и прочие синглтоны.

Stil ★★★★★
()

1. Создай обычный диалог.

2. Создай простой обработчик логов, в котором сообщение будет отправляться диалогу.

3. Наблюдай как QDebug пишет ещё в диалог, а не только в stdout

a1batross ★★★★★
()

А у вас принято, что лог пишется только в окно или всё-таки сначала в файл?

Aceler ★★★★★
()
Ответ на: комментарий от MikeDM

объект для работы с логами и конфигами можно по ссылке передавать без излюбонов с синглтонами.

В каждый класс? Мастер велосипедов?

UVV ★★★★★
()
Ответ на: комментарий от Stil

ИМХО, логи и конфиги – чуть-ли не единственная причина использовать глобальные переменные и прочие синглтоны.

Подписываюсь под каждым словом.

UVV ★★★★★
()
Ответ на: комментарий от UVV

Да, в каждый класс которому нужен логгер. Велосипед - это синглтон. Хотя в Qt можно передать один раз в родительский виджет, а из детей брать его через родителя.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Да, в каждый класс которому нужен логгер. Велосипед - это синглтон. Хотя в Qt можно передать один раз в родительский виджет, а из детей брать его через родителя.

Да вы, батенька, одно хлеще другого советуете, лишь бы синглтоны не использовать. Религиозные убеждения, или психологическая травма?

alex_custov ★★★★★
()
Ответ на: комментарий от x905

топикстартер, смотри осторожнее с такими советами

что будет если qt или твой код сам qDebug дернет в момент вывода в окно с логом?

далее, не просто тупо в окно добавляй, а добавляй в очередь сперва. затем проверь флаг: if (x==false) emit updateSignal(); Х=true;

updateSignal() ДОЛЖЕН быть подключен как QueuedConnection и ни в коем случае не по дефолту, иначе твое приложение вдруг внезапно сломается отчего-то.

в обработчике сигнала, X=false; и обновляй окно, забирая из очереди все события.

ckotinko ☆☆☆
()

В диалоге открой локальный юдп сокет и шли туда логорохло откуда хочешь. Хоть из другого процесса

anonymous
()
Ответ на: комментарий от anonymous

Его мама в детстве пиздила со словами «Будешь ещё использовать синглтоны?! А глобольные переменные, сука!?»

UVV ★★★★★
()
Ответ на: комментарий от UVV

Если речь не про наколеночный дебаг, а про рабочий лог, то MikeDM и slovazap правы.

Кроме того, родители должны иметь возможность контролировать логирование детей, чтобы срать в логи разные части приложения могли с разным уровнем подробности. Синглтонами этого, очевидно, добъёшься только очень кривыми костылями.

nezamudich ★★
()
Ответ на: комментарий от nezamudich

сингтон может высрать нужный функтор, в который будет срать, тот кому надо.

родители должны иметь возможность контролировать логирование детей,

ололо, аксиоматика такая что я прямо нимагу. декларирую, что не должны.

anonymous
()
Ответ на: комментарий от anonymous

ололо, аксиоматика такая что я прямо нимагу. декларирую, что не должны.

лорчую этого анонима.

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.