Russian Qt Forum

Qt => Вопросы новичков => Тема начата: yuranich37 от Август 01, 2012, 01:34



Название: вызов сигнала с параметром
Отправлено: yuranich37 от Август 01, 2012, 01:34
допустим, мне нужно связать сигнал QSpinBox::valueChanged(int i) с некоторым моим слотом someSlot().

запись connect (qspinbox, SIGNAL(valueChanged(qspinbox->value())), someclass, SLOT(someSlot())) не работает.
когда я меняю значение qspinbox'a программа выводит в терминал, что нет такого сигнала: valueChanged(qspinbox->value()).

Как в таком случае нужно связывать сигнал со слотом??


Название: Re: вызов сигнала с параметром
Отправлено: sidsukana от Август 01, 2012, 06:46
Сигнал вызывается сам когда произойдет событие (в данном случае вы измените значение спинбокса). Вы должны просто написать слот для приема данных от сигнала.

т.е ваш слот должен иметь вид:

Код:
void someSlot(int i);

Далее в программе делаем связь (указывается только тип параметра, а так же параметры сигнала должны быть идентичны параметрам слота по типу и по количеству):

Код:
connect (qspinbox, SIGNAL(valueChanged(int)), someclass, SLOT(someSlot(int)));

Ну и сама обработка слота:

Код:
void someSlot(int i)
{
    label->setText(QString::number(i));
}

И почитайте на досуге про систему сигналов-слотов.


Название: Re: вызов сигнала с параметром
Отправлено: mutineer от Август 01, 2012, 10:59
http://doc.crossplatform.ru/qt/4.7.x/signalsandslots.html


Название: Re: вызов сигнала с параметром
Отправлено: yuranich37 от Август 01, 2012, 11:42
sidsukana
Большое спасибо, в дальнейшем буду почаще обращаться к документации, сейчас просто иду по книжке Бланшет, Саммерфилд "Qt4. Программирование GUI на С++.2ed" и там, пока, к сожалению, про параметры у слотов и сигналов ничего не было сказано :(


Название: Re: вызов сигнала с параметром
Отправлено: lighting от Август 01, 2012, 14:19
Бланшет и Саммерфилд, 2-е издание. Описание сигналов и слотов идет на 19 странице.


Название: Re: вызов сигнала с параметром
Отправлено: yuranich37 от Август 02, 2012, 11:42
я знаю. я про параметры говорю.