Здравствуйте, гость ( Вход | Регистрация )
mishabard | Дата 14.6.2011, 23:54 |
Всем Спасибо! Помогли! я разобрался. все работает))) | |
Litkevich Yuriy | Дата 13.6.2011, 23:59 |
а в слот необходимо передать значение сигнал и передаёт значение в слот, если нет подходящего сигнала, то в слот нечего передавать. |
|
antzol | Дата 13.6.2011, 23:02 |
В слоте пишем: QPushButton *btn = (QPushButton *)sender(); Или использовать QSignalMapper. |
|
mishabard | Дата 13.6.2011, 21:41 |
А как быть в таком случае??? Если сигнал обрабатывается нажатием кнопки clicked()- без параметров, а в слот необходимо передать значение, например указатель.? | |
Гость | Дата 13.6.2011, 21:20 |
Количество параметров слота всегда не больше количества параметров сигнала. А у тебя наоборот у сигнала нет параметров, а у слота есть. | |
mishabard | Дата 13.6.2011, 20:59 |
Добрый вечер! Все перерыл все погуглил. ответа не нашел. простите. Суть следующая: Есть два класса, объекты которых создаются динамически, связываю их между собой сигналом и слотом, в первом класе по нажатию кнопки создаю динамически диалоговое окно второго класса, хочу связать сигналом и слотом 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) { ....... } |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 20.4.2024, 14:57 |