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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с передачей параметра в слот  (Прочитано 2149 раз)
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() основного класса.
Подскажите, где я ошибаюсь.
Спасибо.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июль 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 &)));
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
varaktor
Гость
« Ответ #2 : Июль 02, 2011, 16:15 »

Спасибо за помощь. Все работает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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