Тёмный

Qt уроки #25. PopUp уведомление в стиле Gnome с помощью Qt 

EVILEG
Подписаться 4,1 тыс.
Просмотров 3,8 тыс.
50% 1

Статья по уроку доступна по следующей ссылке:
evileg.com/ru/...
Отказываемся от стандартных уведомлений системного трея в силу его малой функциональности? Может тогда стоит написать собственное PopUp уведомление.
В этом уроке так и попробуем сделать. Напишем небольшое приложение, которое будет показывать всплывающее уведомление в стиле Gnome с произвольным текстом.
Qt Уроки: evileg.com/ru/...
PyQt5 Уроки: evileg.com/ru/...
Django Уроки: evileg.com/ru/...
QML Уроки: evileg.com/ru/...

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 12   
@birdhgddfbnkjgcc
@birdhgddfbnkjgcc 8 лет назад
С отступом от края рабочего стола могут быть проблемы, особенно если панель задач находится справа или снизу, но растянута по высоте. DesktopWidget имеет замечательную функцию, которая возвращает "действительную/доступную" рабочую область без панели задач - availableGeometry. т.е. (QApplication::desktop() -> availableGeometry().width() - 36 - popUp -> width()) + QApplication::desktop() -> availableGeometry().x(); (QApplication::desktop() -> availableGeometry().height() - 52 - popUp -> height()) + QApplication::desktop() -> availableGeometry().y(); При таком раскладе совершенно неважно где расположена панель задач и какой она высоты/ширины. Лучше сделать отступы одинаковыми. Брать в скобки арифметические действия с вычитанием не обязательно (надеюсь понятно что вычитание выполняется первым) и проставлены для большей наглядности. Рекомендую подключить сигнал QDesktopWidget::workAreaResized к слоту, который будет корректировать позицию уведомления при изменении рабочей области (popUp -> setGeometry(): для примера разместили панель задач справа уже после запуска программы и отображение будет некорректным). Также рекомендую внести эти фиксы до того, как это превратится в баг.
@EVILEG
@EVILEG 8 лет назад
+Vitali Nix Внёс фикс по вашему предложению в статью на сайте. Учитывая, что содержимое уведомления влияет на его размеры, то пересчёт геометрии должен делаться при каждом вызове уведомления. В данных условиях можно пренебречь сигналом изменения доступной области. Лично я не сталкивался с тем, чтобы доступная рабочая область изменялась настолько динамично.
@birdhgddfbnkjgcc
@birdhgddfbnkjgcc 8 лет назад
+Евгений «EVILEG» Легоцкой как хотите, моё дело предложить...
@EVILEG
@EVILEG 8 лет назад
И я учитываю эти предложения )) спасибо за них. Варианты разные могут быть, сами понимаете. Если бы это был не урок о том, как можно сделать что-то одно, а обзор новой функциональности того или иного программного продукта, тогда да, возможно необходимо было немедленно внести подобный фикс полностью, но в тоже время нужно учесть, а стоит ли. Лично Вы, как часто меняете размеры и местоположение панели быстрого доступа? Скорее всего не часто. В тоже время это урок/пример и лишняя перегрузка информацией тоже ни к чему. Лучше накопить данные и выкатить второй урок, где уже будут освещены следующие проблемы и этапы разработки.
@birdhgddfbnkjgcc
@birdhgddfbnkjgcc 8 лет назад
+Евгений «EVILEG» Легоцкой хм, в зависимости от того, какое приложение у меня запущено. Когда запущен Qt Creator - она у меня слева, так удобно осуществлять навигацию по файлам проекта и недалеко панель задач. После выхода из Creator перемещаю на прежнее место. Для меня так удобно. Ладно, для каждого своё )
@EVILEG
@EVILEG 8 лет назад
+Vitali Nix ну да. всякие решения и применения требуют разных подходов во всех случаях. Вообще с вашего первого комментария я почерпнул для себя новые моменты. Проанализировав их, я учёл тот факт, что в случае с уведомлением нужно делать расчёт геометрии с Вашими поправками в случае выполнения метода show() (перед ним или внутри него), но отслеживать сигнал об изменении доступной области рабочего стола не обязательно. В данном примере высота и ширина уведомления зависит от содержимого, а значит нужно при каждом вызове уведомления делать пересчёт точки установки уведомления на рабочем столе. В случае с сигналом об изменении доступной области рабочего стола, Мы будем пересчитывать геометрию уведомления, когда оно в 99% случаев будет вообще скрыто от глаз пользователя, а при вызове с новым контентом Мы всё равно пересчитаем геометрию уведомления. Получается, что обработка данного сигнала просто излишняя. Вот, что я имел ввиду ))
@dggd1442
@dggd1442 Год назад
thannnnnnnkyouuuuuuuuuuuu
@АкылбекАсилбекуулу
спасибо
@Versie2007
@Versie2007 8 лет назад
Хороший канал! Надеюсь энтузиазм автора со временем не исчезнет) Небольшое пожелание. Поскольку код готовится перед записью видео, а не во время, то хорошо бы сначала показывать, что будет в итоге, а потом объяснять, как это сделать.
@EVILEG
@EVILEG 8 лет назад
+Max Checkanov Благодарю за отзыв. Хорошо, в следующем видеоуроке сделаю демонстрацию итогового варианта в начале.
Далее
OYUNCAK DİREKSİYON İLE ARABAYI SÜRDÜ 😱
00:16
Просмотров 4,8 млн