Russian Qt Forum

Qt => Общие вопросы => Тема начата: ser1801 от Октябрь 25, 2009, 23:53



Название: Как в параметре функции передать булеву переменную?
Отправлено: ser1801 от Октябрь 25, 2009, 23:53
public slots:
    void function (bool *i);
//обьявление в заголовочном файле class.h

void class::function(bool *i){
    pushButton->setEnabled(i);
}
//тело функции в class.cpp

connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(true)));
//попытка соединить...

Компилятор ругается на строчку с коннектом, говорит Object::connect: No such slot class::function(true) in class.cpp:32
Буду очень признателен если мне ктонить обьяснит что я делаю не так...


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: lit-uriy от Октябрь 26, 2009, 00:01
connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(true)));
//попытка соединить...
при соединении ничего не передаёшь!
Втыкая вилку RJ45 в разъём сетевухи, ничего не передаёш в сетевуху - просто соединяешь. Передавать будет одна машина (QObject) другой через данное соединение


Название: Re: Как в параметре функции передать булеву п
Отправлено: Karl-Philipp от Октябрь 26, 2009, 00:03
ser1801,
у тебя в слоте указатель, а ты передаешь конкретное значение ???

P.S. Почему ты передаешь указатель на bool в слот? Мне кажется, что было бы лучше просто передавать значение bool.


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: ser1801 от Октябрь 26, 2009, 00:27
Чет я не пойму, можно ли таким образом что-либо передавать.
Т.е. есть ли способ активировать функцию с булевым параметром по средствам сигнала? Если да, то как это сделать?


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: ритт от Октябрь 26, 2009, 00:51
читай документацию.
или ищи по форуму.


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: kirill от Октябрь 26, 2009, 06:20
connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(bool *)));

указатель на bool это круто конечно


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: lit-uriy от Октябрь 26, 2009, 11:42
ser1801, в строчке:
connect(pushButton_3,SIGNAL(clicked()),...
сигнал не имеет никакого параметра, стало быть в слот никаких данных не попадёт.
Если у тебя есть слот:
mySlot(ArgType arg), и нужно передавать аргумент, то и сигнал нужно подобрать с таким же типом аргумента (если такой сигнал у объекта есть).



Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: SABROG от Октябрь 26, 2009, 17:22
connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(bool *)));

указатель на bool это круто конечно

Иногда по другому будет сложнее сделать, например в методе QString нужно возвратить сразу 2 параметра:

int QString::toInt ( bool * ok = 0, int base = 10 ) const


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: kirill от Октябрь 27, 2009, 06:08
connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(bool *)));

указатель на bool это круто конечно

Иногда по другому будет сложнее сделать, например в методе QString нужно возвратить сразу 2 параметра:

int QString::toInt ( bool * ok = 0, int base = 10 ) const

Особенно если глянуть на его использование bool
Код:
void class::function(bool *i){
    pushButton->setEnabled(i);
}


Название: Re: Как в параметре функции передать булеву переменную?
Отправлено: SASA от Ноябрь 03, 2009, 19:32
Если у тебя есть слот:
mySlot(ArgType arg), и нужно передавать аргумент, то и сигнал нужно подобрать с таким же типом аргумента (если такой сигнал у объекта есть).

Или можно сделать слот со значением по умолчанию. Тогда коннект пройдёт. В данном случае:
Код:
public slots:
    void function (bool *i = 0);
Хотя, судя по тексту, имелось ввиду:
Код:
public slots:
    void function (bool i = true);