crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Не видит 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


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9632
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Цитата(mishabard @ 14.6.2011, 0:41) *
а в слот необходимо передать значение
сигнал и передаёт значение в слот, если нет подходящего сигнала, то в слот нечего передавать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mishabard
  опции профиля:
сообщение 14.6.2011, 23:54
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем Спасибо! Помогли! я разобрался. все работает)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2017, 14:33