Не видит SLOT с параметром, Не видит SLOT с параметром, без параметров все работает. |
Здравствуйте, гость ( Вход | Регистрация )
Не видит SLOT с параметром, Не видит SLOT с параметром, без параметров все работает. |
mishabard |
13.6.2011, 20:59
Сообщение
#1
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый вечер! Все перерыл все погуглил. ответа не нашел. простите. Суть следующая:
Есть два класса, объекты которых создаются динамически, связываю их между собой сигналом и слотом, в первом класе по нажатию кнопки создаю динамически диалоговое окно второго класса, хочу связать сигналом и слотом spinbox и button из двух классов. Все компилируется, но при зосдании класса пишет: Object::connect: No such slot MWindows1::slot1(pbase->pcb) in ../untitled1/mainwindows.cpp:54 Пробовал делать слот без параметров, все работет!!!! Но мне не подходит мне необходимо через параметр из класа в класс передать значение. Вот код: все упростил, чтоб оставить только необходимое: ПРобовал все варианты: connect(pbase->pcmdC,SIGNAL(clicked()),this, SLOT(slot1(pbase->pcb))); QObject::connect(pbase->pcmdC,SIGNAL(clicked()),this, SLOT(slot1(pbase->pcb))); MWindows1::connect(pbase->pcmdC,SIGNAL(clicked()),this, SLOT(slot1(pbase->pcb))); а вот так работает: connect(pbase->pcmdC,SIGNAL(clicked()),this, SLOT(slot1())); // Слот без параметров!!!!!! Помогите! Что не так?????? Клас 1: #include"basedialog.h" #include<QtGui> class MWindows1: public QDialog { Q_OBJECT public: ..... public slots: void slot1(QSpinBox * p){pSpinBox->setValue(p->value()); }; private: .... QSpinBox * pSpinBox; ..... }; Клас 2: #include <QtGui> class BaseDialog : public QDialog { Q_OBJECT public: ..... QSpinBox * pcb; QPushButton * pcmdC; ..... }; Создаю процедуру обработки нажтия кнопки в класе 1 void MWindows1::PushBaseDialog() { BaseDialog * pbase = new BaseDialog; connect(pbase->pcmdC,SIGNAL(clicked()),this, SLOT(slot1(pbase->pcb))); //н работает if (pbase->exec()==QDialog::Accepted) { ....... } |
|
|
Гость_Гость_* |
13.6.2011, 21:20
Сообщение
#2
|
Гости |
Количество параметров слота всегда не больше количества параметров сигнала. А у тебя наоборот у сигнала нет параметров, а у слота есть.
|
|
|
mishabard |
13.6.2011, 21:41
Сообщение
#3
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
А как быть в таком случае??? Если сигнал обрабатывается нажатием кнопки clicked()- без параметров, а в слот необходимо передать значение, например указатель.?
|
|
|
antzol |
13.6.2011, 23:02
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 8.6.2011 Пользователь №: 2728 Спасибо сказали: 0 раз(а) Репутация: 0 |
В слоте пишем:
QPushButton *btn = (QPushButton *)sender(); Или использовать QSignalMapper. |
|
|
Litkevich Yuriy |
13.6.2011, 23:59
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
mishabard |
14.6.2011, 23:54
Сообщение
#6
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем Спасибо! Помогли! я разобрался. все работает)))
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 4:19 |