Russian Qt Forum

Qt => Вопросы новичков => Тема начата: helga1917 от Ноябрь 01, 2013, 14:15



Название: как правильно передать указатель на массив в слот?
Отправлено: helga1917 от Ноябрь 01, 2013, 14:15
Здравствуйте, вопрос в теме. компилятор пишет, что нет такого слота. Наверно не правильно передаю указатель.
Вот упрощенный пример:

window.h:
Код
C++ (Qt)
#include <QWidget>
#include <QDebug>
 
class Window : public QWidget
{
    Q_OBJECT
public:
    Window();
     void func ()
     {
       emit sig();
      }
public slots:
      void set (int *mas)
       {
        qDebug()<<*mas;
        }
signals:
       void sig();
};
 


main.cpp:
Код
C++ (Qt)
#include "window.h"
#include <QApplication>
 
int main (int argc, char *argv[])
{
      QApplication a (argc, argv);
      Window w, w2;
 
      int mas [3] = {1,2,3};
      int *u = mas;
 
      QObject::connect (&w, SIGNAL (sig()), &w2, SLOT (set(u)));
 
       w.func();
       w.show();
 
return a.exec();
};
 


Название: Re: как правильно передать указатель на массив в слот?
Отправлено: mutineer от Ноябрь 01, 2013, 14:19
Код
C++ (Qt)
QObject::connect (&w, SIGNAL (sig()), &w2, SLOT (set(u)));
 
Нет такого синтаксиса передачи параметра из сигнала в слот, правильный синтаксис есть в примерах и документации и в паре десятков новичковых тем на этом форуме


Название: Re: как правильно передать указатель на массив в слот?
Отправлено: helga1917 от Ноябрь 01, 2013, 14:35
А обязательно нужно, чтоб сигнал передавал слоту указатель?
мне нужно чтоб по сигналу, сработал слот , который принимает указатель на массив,создаваемый в теле программы. Так нельзя?


Название: Re: как правильно передать указатель на массив в слот?
Отправлено: mutineer от Ноябрь 01, 2013, 14:36
А откуда этот параметр возьмется в момент вызова? Сделай указатель членом w2 и в слоте используй


Название: Re: как правильно передать указатель на массив в слот?
Отправлено: helga1917 от Ноябрь 01, 2013, 14:39
ясно, спасибо