Для своей программки LinForismatic, отображающей цитаты на рабочем столе, понадобилось выводить красивые всплывающие окошки содержащие произвольный текст и, по мере необходимости, небольшое изображение-иконку.
Под линуксом с этим проблем нет - libnotify поможет всем. Однако хотелось кросс-платформенного решения, под определение которого подпадал widget для вывода OSD из состава музыкального проигрывателя Clementine.
Немного порывшись в исходном коде проигрывателя нужные классы были найдены. Единственное чего не хватало в реализации, так это установление произвольного шрифта - что я и добавил, собственно в этот widget.
В итоге получаем:
Под линуксом с этим проблем нет - libnotify поможет всем. Однако хотелось кросс-платформенного решения, под определение которого подпадал widget для вывода OSD из состава музыкального проигрывателя Clementine.
Немного порывшись в исходном коде проигрывателя нужные классы были найдены. Единственное чего не хватало в реализации, так это установление произвольного шрифта - что я и добавил, собственно в этот widget.
В итоге получаем:
Если кому интересно, то я выложил отдельный архив:
http://dl.dropbox.com/u/6896945/prettyosd.zip
Использовать можно следующим образом:
osd = new OSDPretty(OSDPretty::Mode_Popup);
osd->set_fading_enabled(true);
QFont font("Tahoma",11);
osd->setOsdFont(font);
osd->set_popup_duration(20000);
osd->SetMessage(name,text,QImage());
osd->show();
А можно сделать так, чтобы он не реагировал на мышь? Т.е. чтобы объекты позади него реагировали, а он сам нет?
ОтветитьУдалитьИмеется ввиду, чтобы при наведении на всплываюшее окошко оно не реагировало (не становилось прозрачней) или чтобы при нажатии в области окошка реагировал элемент, возможно, чужого окна?
ОтветитьУдалитьЕсли первое, то
void OSDPretty::enterEvent(QEvent *)
void OSDPretty::leaveEvent(QEvent *)
Если, второе, то честно говоря так сразу и затрудняюсь ответить
Интересная штуковина!
ОтветитьУдалитьОгромное человеческое спасибо
ОтветитьУдалитьСпасибо большое) Очень не охото было писать для своего плеера уведомления) А Системные не красивые.
ОтветитьУдалить