#c #qt #signals #connect #slots
#c #qt #сигналы #Контакты #слоты
Вопрос:
Я использую горизонтальный ползунок Qt и хочу подключить его сигнал с измененным значением к определенному мной слоту. Однако мне нужно получить доступ к определенному элементу внутри этого слота, чтобы изменить переменную благодаря int, который я установил с помощью ползунка. До сих пор моя строка подключения выглядит так :
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setVariable(int)));
Возможно ли передать более одного аргумента в мой слот?То, что я хотел бы сделать, это что-то вроде :
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setVariable(int, pointerToMember*)));
Если нет, как я могу продолжить?
Спасибо
Комментарии:
1. Откуда берется значение
pointerToMember*
? Если он известен во времяconnect
вызова, вы можете использовать захватlambda
в качестве слота.2. Мой указатель определен в том же методе, с помощью которого я создал это соединение, несколькими строками ранее, поэтому, я думаю, я могу попробовать ваше предложение
3. какую версию QT вы используете?
4. Я работаю над Qt 6.2.1
Ответ №1:
Да, вы можете, но вам нужно использовать новый стиль подключения, чтобы вы могли передавать лямбда-функцию
connect(slider, amp;QAbstractSlider::valueChanged, this, [=](int amp;new_value) { this->setVariable(new_value, ... );});
Редактировать:
Это работает только в Qt5 и выше