Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: phpCoder от Январь 08, 2016, 14:37



Название: Всплывающие сообщения
Отправлено: phpCoder от Январь 08, 2016, 14:37
Добрый день.
Как в Qt сделать всплывающие сообщения? Пример: в приложении произошло какое-то событие (например завершена загрузка). Это я хочу сказать пользователю, поэтому внизу главного окна должно выехать (slide) всплывающее сообщение. На Javascript (jQuery) это делается элементарно.

Условия, которым должно удовлетворять такое сообщение:
1. Контейнер, (виджет/фрейм...) в котором написано сообщение, должен быть растянут по размеру родительского виджета. При изменении размеров родителя меняется и ширина самого сообщения. Высота сообщения зависит всегда от высоты содержимого.
2. Таких сообщений может быть на экране несколько, поэтому они не должны перекрывать друг друга.
3. С точки зрения html/css такое сообщение позиционируется абсолютно. Как тут этого добиться? Ведь всплывающее сообщение появляется поверх родителя и не должно изменять его layout, т.е. соседние виджеты должны остаться на своих местах и никуда не съехать.

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


Аналог таких сообщений можно увидеть в самом Qt Creator, когда собираешь проект (оно еще содержит зеленый прогресс-бар).


Название: Re: Всплывающие сообщения
Отправлено: panAlexey от Январь 08, 2016, 17:39
На Javascript (jQuery) это делается элементарно.
Языки высокого уровня и предназначены для того что-бы было все элементарно.
Ты работаешь с С++, а это язык среднего уровня. Так что приготовся к тому, что деталей будет в сотню раз больше на каждый чих.
Что до сообщений, тебе нужно полезть в "Examples and Demos" за примером "Window Flags" и окнов в стиле "Qt::ToolTip".
И от него и плясать.


Название: Re: Всплывающие сообщения
Отправлено: navrocky от Январь 10, 2016, 13:42
http://www.prog.org.ru/topic_18716_0.html
http://www.prog.org.ru/topic_16737_0.html


Название: Re: Всплывающие сообщения
Отправлено: Dimka Novikov от Январь 20, 2016, 11:46
Можете глянуть вот тут http://www.prog.org.ru/index.php?topic=29405

Для первого появления сообщения можно использовать WAF::Animation::sideSlide, скрыв фоновую декорацию, а для появления новых сообщений WAF::Animation::slide

А вообще кейс интересный, напишите потом, что у вас получится!


Название: Re: Всплывающие сообщения
Отправлено: Dimka Novikov от Январь 20, 2016, 13:43
У меня получилось вот так :)

(http://dimkanovikov.pro/assets/images/dev/WAF-demo3.gif)

UPD: Вылил пример на гитхаб, который давал в предыдущем посте. И это не конечная реализация самой системы уведомлений, а лишь пример, расценивайте это скорее, как направление для поиска, а не как готовое решение.