Qt не получается передать массив между формами. Похоже на то, что сигнал не доходит до слота. В чем может быть проблема?

Работаю с массивами, нужно вывести данные на график в другую форму.

mainwindow.h
#include <form.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);

    /......../

    ~MainWindow();


private slots:
    void on_pushButtonGen_clicked();

    void on_pushButtonGO_clicked();

    void on_pushButtonShowGraph_clicked();
signals:
    void sendData(int PopulationSum, double fitnesMean);

private:
    Ui::MainWindow *ui;
    Form *form;
};

#endif // MAINWINDOW_H

сигнал sendData будет отправляться в функции on_pushButtonGen_clicked()

Заголовочный файл формы куда будут передаваться данные из главной.
form.h
#ifndef FORM_H
#define FORM_H

#include <QWidget>

namespace Ui {
class Form;
}
class Form : public QWidget
{
    Q_OBJECT

public:
    explicit Form(QWidget *parent = 0);
    ~Form();
private:
    Ui::Form *ui;
/......../

public slots:
    void recieveData(int _PopulationSum, double _fitnesMean);
};
#endif // FORM_H

В слот recieveData идет сигнал sendData
Вот так я определил этот слот в form.cpp

void Form::recieveData(int _PopulationSum, double _fitnesMean)
{

    points <<QPointF(_PopulationSum,_fitnesMean);
    curve->setSamples( points ); 
     curve->attach( ui->Qwt_Widget ); 
     ui->lineEdit->setText("I WORK");  ///проверяет, работает ли функция...не работает..
}

Ну и собственно сам
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <form.h>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    form = new Form();
    connect(ui->pushButtonShowGraph, SIGNAL(clicked()), form, SLOT(show())); // 
    connect(ui->pushButtonGen, SIGNAL(clicked()), this, SLOT(on_pushButtonGen_clicked())); 
    connect(this, SIGNAL(sendData(int PopulationSum, double fitnesMean)), form, 
SLOT(recieveData(int _PopulationSum, double _fitnesMean))); 

}

MainWindow::~MainWindow()
{
    delete ui;
}



void MainWindow::on_pushButtonGen_clicked()
{
    /....код генерирующий и обрабатывающий массивы....\
    emit sendData(PopulationSum,PBest->fitnessMean); //не могу понять, почему не доходит.
}


В чем может быть проблема? Подскажите, пожалуйста.
  • Вопрос задан
  • 3638 просмотров
Решения вопроса 1
peleron
@peleron
Веду кружки по робототехнике
А при запуске приложения в консоль не выводятся уведомления о невозможности создать коннект или что-то типа того?
в connect не надо писать наименование переменных. Т.е. надо
connect(this, SIGNAL(sendData(int, double)), form, SLOT(recieveData(int, double)));

И ещё - для отладки лучше выводите сообщения в консоль с помощью qDebug() << "";
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы