Издает сигнал не работает должным образом

У меня есть класс с именем dosecalibration, который содержит dosecalibration.cpp и dosecalibration.h. Класс связан с отдельной формой пользовательского интерфейса. На форме, когда кнопка нажата, сигнал испускается.

В главном окне есть соединение для получения этого сигнала, однако оно не работает. Код выглядит следующим образом:

dosecalibration.h:

#ifndef DOSECALIBRATION_H
#define DOSECALIBRATION_H

#include <QDialog>
#include <QDebug>namespace Ui {
class dosecalibration;
}

class dosecalibration : public QDialog
{
Q_OBJECT

public:
explicit dosecalibration(QWidget *parent = 0);
~dosecalibration();

double dosefactor;
//bool dose;

private slots:
void on_useCharge_clicked();

void on_useCounts_clicked();

void on_pushButton_clicked();

//    void on_pCSB_valueChanged();

//    void on_countsSB_valueChanged();

signals:
void applydose();private:Ui::dosecalibration *ui;
};

#endif // DOSECALIBRATION_H

dosecalibration.cpp:

#include "dosecalibration.h"#include "ui_dosecalibration.h"
dosecalibration::dosecalibration(QWidget *parent) :
QDialog(parent),
ui(new Ui::dosecalibration)
{
ui->setupUi(this);
ui->countsSB->setEnabled(false);
ui->countsSB->setValue(ui->pCSB->value()*100/9.6);
}

dosecalibration::~dosecalibration()
{
delete ui;
}void dosecalibration::on_useCharge_clicked()
{
ui->countsSB->setEnabled(false);
ui->pCSB->setEnabled(true);
}

void dosecalibration::on_useCounts_clicked()
{
ui->pCSB->setEnabled(false);
ui->countsSB->setEnabled(true);
}

void dosecalibration::on_pushButton_clicked()
{

if(ui->useCharge->isChecked()){
dosefactor = ui->pCSB->value();

}
else if(ui->useCounts->isChecked()){
dosefactor = ui->countsSB->value();
}
emit applydose();
}

//void dosecalibration::on_pCSB_valueChanged()
//{
//    ui->countsSB->setValue(ui->pCSB->value()*100/9.6);
//}

//void dosecalibration::on_countsSB_valueChanged()
//{
//    ui->pCSB->setValue(ui->countsSB->value()*9.6/100);
//}

И mainwindow.h (включает только «include» и слоты):

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <AFE_variables.h>
#include <QMainWindow>

#include "FPGA/fpga.h"#include "FPGA/okFrontPanelDLL.h"#include "decoder.h"#include "analysis.h"#include "about.h"#include "logfile.h"#include "Graph/graphicsscene.h"#include "Graph/graphdialog.h"#include "Graph/qcustomplot.h"#include "Graph/graphicsview.h"#include "settingsdialog.h"#include "dosecalibration.h"
#include <QFileDialog>
#include <QProgressBar>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QGraphicsTextItem>
#include <QDialog>
#include <QDebug>
#include <math.h>

slots:

//Dose calibration

void InitialiseGraphsAfterDose();
void on_actionDose_Calibration_4_triggered();
//void doseCalibrationEnabled();
private:
//Initalisation
void onStart();
void AllocateMemory();
void ConnectFPGA();
bool CheckConnection();
Ui::MainWindow *ui;
okCFrontPanel *xem;
FPGA *fpga;
QProgressBar *progressBar;
QTimer *PlayTimer;

LogFile *logfiledialog;
LogFile *logfileanalysis;
QString LoadLogFilePath;

dosecalibration *dose;

и фрагмент из graphing.cpp, который является частью класса основного окна:

    //connects for dose calibration

dose = new dosecalibration(this);
connect(dose,SIGNAL(applydose()),this,SLOT(InitialiseGraphsAfterDose()));

}

void MainWindow::InitialiseGraphsAfterDose()
{
apply_dose = true;
InitialiseGraphs();
qDebug() << apply_dose;
}

Итак applydose() сигнал излучается нажатием кнопки в интерфейсе dosecalibration. connect должно означать, что значение apply_dose отправляется на консоль, однако ничего не отображается.

РЕДАКТИРОВАТЬ:

Размещение подключения в if утверждение, чтобы определить, действительно ли это соединение, подтверждает, что оно действительно работает правильно.

    //connects for dose calibration

dose = new dosecalibration(this);
if(connect(dose,SIGNAL(applydose()),this,SLOT(InitialiseGraphsAfterDose())))
{
qDebug() << "connect worked";
}

}

Приведенный выше код успешно выводит сообщение, подтверждающее соединение.

Любая идея?

1

Решение

Удалить несколько экземпляров dosecalibrationили обязательно подключите каждый из них, если вам действительно нужно несколько экземпляров.

4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector