Отправляет email-рассылки с помощью сервиса Sendsay
Открытая группа
29 участников
Администратор Legotckoi
Модератор ProgrammersBlog

Последние откомментированные темы:

20250622170714

←  Предыдущая тема Все темы Следующая тема →
пишет:

Qt/C++ - Урок 055. QSignalMapper VS лямбда функции

QSignalMapper является замечательным классом, чтобы организовать работу сигналов и слотов для динамически создаваемых объектов. Например, динамически создаваемых кнопок или объектов в QStackedWidget. Особенно это было актуально в устаревших версиях программного обеспечения, то есть базировавшегося на Qt 4.8 , где система сигналов и слотов строилась на применении макросов. Но в текущих реалиях новый синтаксис на указателях значительно более удобен, а также поддерживает лямбда функции, что может позволить и вовсе избавиться от применения QSignalMapper,который будет выглядеть как монструозный атавизм в новых проектах, которые используют последние версиифреймворка Qt и стандартов языка C++ .

А если учесть ещё и перегрузку map() и mapped() , то это делает код с QSignalMapper ещё более страшным, если использовать коннекты сигналов и слотов с использованием указателей, поскольку необходимо кастовать как сигналы, так и слоты, но об этом чуть позже.

Поэтому давайте рассмотрим небольшой проект, который будет основываться на примере из официальной документации Qt. А именно, пример будет следующий. У нас имеется QLabel, QPushButton и Vertical Layout . По нажатию кнопки в Vertical Layout будут добавляться другие динамические кнопочки, по нажатию на которые в QLabel будет отображаться текст с номером кнопки в следующем виде: "Button 2". На ниже следующем рисунке показан пример данного приложения, внешний вид которого не будет отличаться, тогда как реализаций программного кода будет несколько.

Читать далее

Это интересно
0

28.02.2017
Пожаловаться Просмотров: 367  
←  Предыдущая тема Все темы Следующая тема →


Комментарии временно отключены