crossplatform.ru

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


  Ответ в Не видит SLOT с параметром
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
mishabard Дата 14.6.2011, 23:54
  Всем Спасибо! Помогли! я разобрался. все работает)))
Litkevich Yuriy Дата 13.6.2011, 23:59
 
Цитата(mishabard @ 14.6.2011, 0:41) *
а в слот необходимо передать значение
сигнал и передаёт значение в слот, если нет подходящего сигнала, то в слот нечего передавать.
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)
{
.......
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 14:57