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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача дополнительного параметра в слот  (Прочитано 6013 раз)
vladimirse
Гость
« : Апрель 01, 2017, 01:10 »

Доброго времени суток, уважаемые!
Подскажите пожалуйста, можно ли реализовать подобное:
Код
C++ (Qt)
...
   int x = 5;
   connect(sender, SIGNAL(my_signal(QPoint)), this, SLOT(my_slot(QPoint, x)));
..
 
void my_slot(QPoint point, int x)
{
...
...
}
...
 

В общем в слот требуется передать дополнительный параметр.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 586


Просмотр профиля
« Ответ #1 : Апрель 01, 2017, 08:37 »

Нет.
Читайте документацию.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #2 : Апрель 01, 2017, 09:23 »

Можно, но нужно использовать новые коннекты.
А дальше, либо использовать лямбды, либо std::bind.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #3 : Апрель 01, 2017, 10:47 »

sender->setProperty("theX", x)
emit sender(thePoint)
Записан
vladimirse
Гость
« Ответ #4 : Апрель 02, 2017, 18:46 »

Всем спасибо за помощь!
Решил следующим образом (для истории):
Код
C++ (Qt)
...
int x = 11;
connect(this->ui->tableWidget, &QTableWidget::customContextMenuRequested, [=](QPoint pos) { this->tableWidget_contextMenu(pos, x); });
...
...
void Templiers::tableWidget_contextMenu(QPoint pos, int x)
...
 

В функцию передается QPoint из customContextMenuRequested и 11.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Апрель 03, 2017, 09:21 »

Предлагаю [=] заменить на [this, x]
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #6 : Апрель 03, 2017, 13:15 »

В функцию передается QPoint из customContextMenuRequested и 11.

а что такое х ?
локальная переменная или статическая или классовая ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Апрель 03, 2017, 13:34 »

В функцию передается QPoint из customContextMenuRequested и 11.

а что такое х ?
локальная переменная или статическая или классовая ?


Там локальная переменная.
Насколько я помню такая штука называется "замыкание", после выполнения того кода у лямбды будет "зашито" вместо x значение 11, так что изменение x ничего не поменяет
Записан

qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #8 : Апрель 03, 2017, 14:33 »

Там локальная переменная.
Насколько я помню такая штука называется "замыкание", после выполнения того кода у лямбды будет "зашито" вместо x значение 11, так что изменение x ничего не поменяет

если локальная, тогда я не совсем понимаю зачем ТС нужно 'x' у себя в слоте через сигнал
написал бы там сразу 11 там и былобы тоже самое
Записан
vladimirse
Гость
« Ответ #9 : Апрель 04, 2017, 10:23 »

Там локальная переменная.
Насколько я помню такая штука называется "замыкание", после выполнения того кода у лямбды будет "зашито" вместо x значение 11, так что изменение x ничего не поменяет

если локальная, тогда я не совсем понимаю зачем ТС нужно 'x' у себя в слоте через сигнал
написал бы там сразу 11 там и былобы тоже самое


Эта переменная создана в рамках эксперимента.
Записан
vladimirse
Гость
« Ответ #10 : Апрель 04, 2017, 10:24 »

Предлагаю [=] заменить на [this, x]

Спасибо за подсказку! :-)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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