Russian Qt Forum

Qt => Вопросы новичков => Тема начата: vladimirse от Апрель 01, 2017, 01:10



Название: Передача дополнительного параметра в слот
Отправлено: 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)
{
...
...
}
...
 

В общем в слот требуется передать дополнительный параметр.


Название: Re: Передача дополнительного параметра в слот
Отправлено: Mikhail от Апрель 01, 2017, 08:37
Нет.
Читайте документацию.


Название: Re: Передача дополнительного параметра в слот
Отправлено: Old от Апрель 01, 2017, 09:23
Можно, но нужно использовать новые коннекты.
А дальше, либо использовать лямбды, либо std::bind.


Название: Re: Передача дополнительного параметра в слот
Отправлено: qate от Апрель 01, 2017, 10:47
sender->setProperty("theX", x)
emit sender(thePoint)


Название: Re: Передача дополнительного параметра в сл&#
Отправлено: vladimirse от Апрель 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.


Название: Re: Передача дополнительного параметра в слот
Отправлено: __Heaven__ от Апрель 03, 2017, 09:21
Предлагаю [=] заменить на [this, x]


Название: Re: Передача дополнительного параметра в сл&#
Отправлено: qate от Апрель 03, 2017, 13:15
В функцию передается QPoint из customContextMenuRequested и 11.

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


Название: Re: Передача дополнительного параметра в сл&#
Отправлено: gil9red от Апрель 03, 2017, 13:34
В функцию передается QPoint из customContextMenuRequested и 11.

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


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


Название: Re: Передача дополнительного параметра в сл&#
Отправлено: qate от Апрель 03, 2017, 14:33
Там локальная переменная.
Насколько я помню такая штука называется "замыкание", после выполнения того кода у лямбды будет "зашито" вместо x значение 11, так что изменение x ничего не поменяет

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


Название: Re: Передача дополнительного параметра в сл&#
Отправлено: vladimirse от Апрель 04, 2017, 10:23
Там локальная переменная.
Насколько я помню такая штука называется "замыкание", после выполнения того кода у лямбды будет "зашито" вместо x значение 11, так что изменение x ничего не поменяет

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


Эта переменная создана в рамках эксперимента.


Название: Re: Передача дополнительного параметра в слот
Отправлено: vladimirse от Апрель 04, 2017, 10:24
Предлагаю [=] заменить на [this, x]

Спасибо за подсказку! :-)