Qt: как сделать оформленное всплывающее окно с расширенными возможностями вместо всплывающего окна QSystemTrayIcon по умолчанию

#c #qt #trayicon

#c #qt #trayicon

Вопрос:

У меня простое приложение для уведомлений, и я использую Qt 4.7.1 с C для написания приложения, которое находится в системном трее. Каждый раз, когда приходит сообщение; мне нужно, чтобы оно открывало всплывающее окно. Но мне нужно, чтобы оно было богатым (т. Е. я хочу добавить к нему цвета и картинки). Однако все, что у меня есть, это всплывающее окно сообщения по умолчанию. Как я могу создать новое более богатое окно, которое всегда будет всплывать над значком в трее?

Комментарии:

1. Чтобы уточнить, вы спрашиваете о стилизации всплывающего уведомления, которое может отображаться с помощью QSystemTrayIcon::ShowMessage () или о стилизации какого-либо пользовательского виджета?

2. 1 за ответ на «или вопрос» простым «да».

Ответ №1:

Все классы виджетов qt могут быть оформлены с помощью таблиц стилей, в зависимости от того, где вы создаете свое всплывающее окно (дизайнерское или в коде), присвоите ему таблицу стилей с тем видом, который вы хотите, чтобы оно имело. Вы можете протестировать таблицы стилей в конструкторе, назначив стиль виджету с помощью контекстного меню виджета

После дальнейшего рассмотрения QSystemTrayIcon::showMessage() вызов выдает системное уведомление. Я не знаю, можно ли его оформить. qsystemtrayicon_win.cpp Файл в дистрибутиве qt показывает обходной путь и показывает, как найти местоположение значка в трее (см. QSystemTrayIconSys::findIconGeometry ). Как только у вас будет местоположение, вы можете открыть свое собственное окно в этом местоположении. Я не заглядывал в глубину, я не знаю, сможете ли вы добраться до расположения значка с информацией, которая у вас есть на общедоступной стороне Qt. Возможно, вам придется использовать это для всех окон.

Комментарии:

1. интересно… Я не знал, что всплывающее окно может быть оформлено. Вам когда-нибудь удавалось это сделать?

2. Зависит от того, о каком классе вы говорите, QPopup отсутствует, но QWidget, QFrame, QMenu и так далее могут быть оформлены в стиле. Я написал приложение, которое очень мало рисует на заказ, но использует все стандартные компоненты, даже QTableView, и совсем не похоже на приложение Qt

3. это не так просто сделать, вот почему я спрашиваю, некоторые предлагают наследовать и повторно реализовать show message снова, это непросто или возможно

4. Это сводится к тому, насколько важно для вас иметь всплывающее окно в частном стиле, стоит ли оно тех усилий, через которые вам придется пройти

5. забавный вопрос, конечно, мне нужно оформить больше, чем styled, мне нужно добавить к нему дополнительные опции, например, отобразить более 1 изображения