Russian Qt Forum
Апрель 25, 2024, 12:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Лябда-слоты с перезагрузкой - синтаксис ещё не поменялся?  (Прочитано 2979 раз)
arhiv6
Гость
« : Август 04, 2017, 11:50 »

Возможность использования лямбда-функций в качестве слотов в Qt есть уже несколько лет. Но в случае перезагрузки код получается ужасным. Например:
Код:
 connect(mySocket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error), [ = ] (QAbstractSocket::SocketError error)
 {
     // some code
 });
Может быть уже есть способ записать тоже самое, но более человеческим языком?
Записан
Johnik
Крякер
****
Online Online

Сообщений: 339


Просмотр профиля
« Ответ #1 : Август 04, 2017, 11:58 »

а так?
Код
C++ (Qt)
connect<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(mySocket, &QAbstractSocket::error, [ = ] (QAbstractSocket::SocketError error)
{
    // some code
});
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Август 04, 2017, 12:33 »

Может быть уже есть способ записать тоже самое, но более человеческим языком?

Selecting Overloaded Signals and Slots.
Записан

Пока сам не сделаешь...
arhiv6
Гость
« Ответ #3 : Август 04, 2017, 14:00 »

Спасибо! Такой код проще читается:
Код:
connect(mySocket, qOverload<QTcpSocket::SocketError>(&QTcpSocket::error), [ = ](QTcpSocket::SocketError error)
 {
     // some code
 });
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 23.