Форум сайта python.su
0
Здравствуйте, в моей программе реализована функция оповещений (всплывающие окна). У меня есть отдельный класс, который над всем этим работает, у него есть статистическая ф-ция,в которую передают текст и тип оповещения. Например: (“Файл не найден”, “Ошибка”).
В разных частях импортирую этот класс и использую. Но есть проблемка, вызывать из других потоков нельзя.
Одна из идей была создать свой сигнал и привязать его к классу с оповещениями. И просто когда надо emit сигнал с нужными параметрами. Но как-то все криво. Что скажите?
Офлайн
1
Одна из идей была создать свой сигнал и привязать его к классу с оповещениями. И просто когда надо emit сигнал с нужными параметрами. Но как-то все криво.Так сигналы нужно не привязывать к классу, а определять слоты и соединять нужные сигналы с нужными слотами. И тогда не будет криво.
Отредактировано (Апрель 26, 2009 18:13:13)
Офлайн
0
Значит я могу как-то глобально все это делать? Не привязывать к классам?
Например:
connect(AlertClass, SIGNAL(“signature…”), AlertClass.ShowAlert)
Так я привязываю мой класс, который показывает уведомления к сигналу, обработчик - статистическая ф-ция в классе AlertClass
И в нужном месте эмулирую сигнал: emit(SIGNAL(“signature…”))
Так пройдет?
Офлайн
0
Главная цель - это создать событие (event) в главном потоке программы, в котором работает eventloop Qt-а.
1) создать свой кастомный event и делать postEvent из рабочего потока, сам event и диалог будут отрабатываться в основном потоке;
- или -
2) посылать сигнал (по сути тоже самое что и первое, только более высокоуровневое) из рабочего потока;
В любом случае нужен получатель события, который будет показывать диалог - им может быть любой Qt-шный класс. Как всё это будет реализовано - это уже отдельный вопрос, я бы сделал всё в рамках одного класса и посылал бы события “сам себе” но через eventloop :)
Офлайн
0
Ockonal connect(AlertClassInstance, SIGNAL(“signature…”), AlertClass.ShowAlert)
Офлайн
0
А можете показать какой-то небольшой пример… Я что-то не могу въехать.
Отредактировано (Апрель 26, 2009 19:38:45)
Офлайн
0
хороший пример http://python.su/forum/viewtopic.php?pid=16121#p16121
Офлайн
0
Спасибо за пример. Кажется, понял.
Офлайн