#qt #qt-creator #signals-slots
#qt #qt-creator #сигналы-слоты
Вопрос:
Я новичок в Qt и наткнулся на проблему, на которую не смог найти ответ в Google.
Допустим, я хочу отправить поле ускорения и скорости. Я определяю пользовательский сигнал :
setProperties(QString,double,double,bool)
Однако, как мне определить разницу между скоростью и ускорением в таком заявлении?
connect(dialog, SIGNAL(setProperties(QString,double,double,bool)),
this, SLOT(somerandomslot()));
randomslot
необходимо получить поля скорости и ускорения и манипулировать ими, но в приведенном выше SIGNAL
они просто double
.
Ответ №1:
В этом случае ваша somerandomslot()
функция, вероятно, должна иметь соответствующую сигнатуру функции, чтобы значения, emit
указанные в вашем сигнале, могли быть переданы ей:
void somerandomslot( const QString amp;foo, double a, double v, bool bar );
тогда ваш вызов connect будет выглядеть следующим образом:
connect(dialog, SIGNAL(setProperties(QString,double,double,bool)), this, SLOT(somerandomslot(QString, double, double, bool)));
и когда ваш somerandomslot()
будет вызван, у вас будет доступ к этим переменным.
Комментарии:
1. Привет, Крис, спасибо за ответ, но как randomSlot отличает первый double от второго double? т.е. будет ли первый double из setProperties точно совпадать с первым double из somerandomslot? огромное спасибо
2. Они будут поступать в том же порядке, что и аргументы, переданные вашему сигналу при вызове emit. Точно так же, как любой вызов функции C .