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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в параметре функции передать булеву переменную?  (Прочитано 6233 раз)
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
Буду очень признателен если мне ктонить обьяснит что я делаю не так...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Октябрь 26, 2009, 00:01 »

connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(true)));
//попытка соединить...
при соединении ничего не передаёшь!
Втыкая вилку RJ45 в разъём сетевухи, ничего не передаёш в сетевуху - просто соединяешь. Передавать будет одна машина (QObject) другой через данное соединение
Записан

Юра.
Karl-Philipp
Гость
« Ответ #2 : Октябрь 26, 2009, 00:03 »

ser1801,
у тебя в слоте указатель, а ты передаешь конкретное значение Непонимающий

P.S. Почему ты передаешь указатель на bool в слот? Мне кажется, что было бы лучше просто передавать значение bool.
Записан
ser1801
Гость
« Ответ #3 : Октябрь 26, 2009, 00:27 »

Чет я не пойму, можно ли таким образом что-либо передавать.
Т.е. есть ли способ активировать функцию с булевым параметром по средствам сигнала? Если да, то как это сделать?
Записан
ритт
Гость
« Ответ #4 : Октябрь 26, 2009, 00:51 »

читай документацию.
или ищи по форуму.
Записан
kirill
Гость
« Ответ #5 : Октябрь 26, 2009, 06:20 »

connect(pushButton_3,SIGNAL(clicked()),this,SLOT(function(bool *)));

указатель на bool это круто конечно
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Октябрь 26, 2009, 11:42 »

ser1801, в строчке:
connect(pushButton_3,SIGNAL(clicked()),...
сигнал не имеет никакого параметра, стало быть в слот никаких данных не попадёт.
Если у тебя есть слот:
mySlot(ArgType arg), и нужно передавать аргумент, то и сигнал нужно подобрать с таким же типом аргумента (если такой сигнал у объекта есть).

Записан

Юра.
SABROG
Гость
« Ответ #7 : Октябрь 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
Записан
kirill
Гость
« Ответ #8 : Октябрь 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);
}
Записан
SASA
Гость
« Ответ #9 : Ноябрь 03, 2009, 19:32 »

Если у тебя есть слот:
mySlot(ArgType arg), и нужно передавать аргумент, то и сигнал нужно подобрать с таким же типом аргумента (если такой сигнал у объекта есть).

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


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