Russian Qt Forum

Qt => Вопросы новичков => Тема начата: varaktor от Июль 02, 2011, 12:53



Название: Проблема с передачей параметра в слот
Отправлено: varaktor от Июль 02, 2011, 12:53
Пытаюсь использовать QSignalMapper для передачи параметра в слот.
Имеется:

Код:
class Arfa_Main_Form : public QMainWindow
{
...
private:
QPushButton *push1;
QSignalMapper *mapper_Mode;
QFrame *mainFrameWidget;

void chooseWorkMode();
...
signals:
void clicked(const QString &text);
...
private slots:
void setMode(const QString &text);
...
}

void Arfa_Main_Form::chooseWorkMode()
{
        mainFrameWidget = new QFrame;
...
        const QString mode = "1";
mapper_Mode = new QSignalMapper(this);
connect(push1, SIGNAL(clicked()), mapper_Mode, SLOT(map()));
mapper_Mode->setMapping(push1, QString(mode));

QObject::connect(mapper_Mode, SIGNAL(mapped(const QString &)), this, SIGNAL(clicked(const QString &)));

QObject::connect(push1, SIGNAL(clicked(const QString&)), this, SLOT(setMode(const QString&)));
}

void chooseWorkMode() запускается из конструктора основного класса
Над основной формой появляется окошечко, на котором есть кнопка push1
При нажатии на кнопку необходимо, чтобы праметр mode из chooseWorkMode передавался в слот setMode() основного класса.
Подскажите, где я ошибаюсь.
Спасибо.


Название: Re: Проблема с передачей параметра в слот
Отправлено: kambala от Июль 02, 2011, 16:09
последняя строчка неправильна - у QPushButton нету сигнала clicked(const QString &). нужно тут push1 заменить на this. или вообще убрать последнюю строку и поменять предыдущую (если такое приемлимо для тебя):
Код
C++ (Qt)
QObject::connect(mapper_Mode, SIGNAL(mapped(const QString &)), this, SLOT(setMode(const QString &)));


Название: Re: Проблема с передачей параметра в слот
Отправлено: varaktor от Июль 02, 2011, 16:15
Спасибо за помощь. Все работает.