Я пытаюсь соединить два кадра с пользовательским сигналом, но на самом деле я не получаю его.
Этот код является лишь примером того, что я пытаюсь сделать в моей программе, моя цель состоит в том, чтобыпередавать данные между кадрами.
Файлы:
(отправитель)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
signals:
void send();
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H
В "mainwindow.cpp" у меня есть пустота on_pushButton_clicked (), которая испускает сигнали показывает новый кадр:
void частного слота:
void MainWindow::on_pushButton_clicked()
{
emit send();
Dialog sw;
sw.setModal(true);
sw.exec();
}
(получатель):
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QDebug>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void receive();
private:
Ui::Dialog *ui;
int a;
};
#endif // DIALOG_H
и .cpp:
#include "dialog.h"
#include "ui_dialog.h"
#include "mainwindow.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
a=0;
MainWindow w;
connect(&w, SIGNAL(send()), this, SLOT(receive()));
qDebug() << a;
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::receive(){
qDebug() << "ola";
a++;
}
Вывод: Итак, в основном функция Dialog не печатает qDebug (), а 'a' равно 0, поэтому я пришел к выводу, что соединение не установлено / не выполнено.
Спасибо всем, С наилучшими пожеланиями, Дилан Лопес.
править: Написал заключение в конце поста.