Alexander111122
11th July 2016, 07:35
Greetings everyone!
I have encountered a issue. I am trying to destroy a widget which was declared as an object in my mainwindow widget. I was hoping to get a "destroyed" signal in the mainwindow widget when the destruction take place - but I don't.
Here is the code:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QPushButton>
#include <QBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPointF>
#include <QString>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QComboBox>
#include <QByteArray>
#include <QDebug>
#include <QListWidget>
#include <QListWidgetItem>
#include <QFile>
#include <QTimer>
#include <QDateTime>
#include <QDir>
#include <stddef.h>
#include <stdint.h>
#include <QGroupBox>
#include <QMouseEvent>
#include <QTextEdit>
#include <math.h>
#include <QClipboard>
#include <QMimeData>
#include <QApplication>
#include <QDoubleSpinBox>
#include <QSpinBox>
#include "receiver.h"
#include "transmitter.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
Receiver *rec;
Transmitter *tran;
QPushButton *transmitter_button;
QPushButton *receiver_button;
private slots:
void receiver_slot(void);
void transmitter_slot(void);
void receiver_destroyed(void);
};
#endif // MAINWINDOW_H
#ifndef RECEIVER_H
#define RECEIVER_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QPushButton>
#include <QBoxLayout>
#include <QDebug>
class Receiver : public QWidget
{
Q_OBJECT
public:
explicit Receiver(QWidget *parent = 0);
~Receiver();
private:
QPushButton *close;
signals:
void close_sig(void);
public slots:
void close_rec(void);
//void abvgd(void);
};
#endif // RECEIVER_H
#ifndef TRANSMITTER_H
#define TRANSMITTER_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
class Transmitter : public QWidget
{
Q_OBJECT
public:
explicit Transmitter(QWidget *parent = 0);
//~Transmitter();
private:
//QPushButton *close;
signals:
public slots:
//void close_tran(void);
};
#endif // TRANSMITTER_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
transmitter_button = new QPushButton("Transmitter");
receiver_button = new QPushButton("Receiver");
QHBoxLayout *horizontal_0 = new QHBoxLayout;
horizontal_0->addWidget(transmitter_button);
horizontal_0->addWidget(receiver_button);
ui->centralWidget->setLayout(horizontal_0);
connect(transmitter_button, SIGNAL(clicked(bool)), this, SLOT(transmitter_slot()));
connect(receiver_button, SIGNAL(clicked(bool)), this, SLOT(receiver_slot()));
connect(rec, SIGNAL(destroyed(QObject*)), this, SLOT(receiver_destroyed()));
}
void MainWindow::transmitter_slot(void)
{
tran = new Transmitter;
transmitter_button->setEnabled(false);
tran->show();
}
void MainWindow::receiver_slot(void)
{
rec = new Receiver;
receiver_button->setEnabled(false);
rec->show();
}
void MainWindow::receiver_destroyed(void)
{
qDebug() << "ok";
receiver_button->setEnabled(true);
}
MainWindow::~MainWindow()
{
delete ui;
}
#include "receiver.h"
Receiver::Receiver(QWidget *parent) : QWidget(parent)
{
close = new QPushButton("Close");
QHBoxLayout *horizontal_0 = new QHBoxLayout;
horizontal_0->addWidget(close);
this->setLayout(horizontal_0);
connect(close, SIGNAL(clicked(bool)), this, SLOT(close_rec()));
}
void Receiver::close_rec(void)
{
this->~Receiver();
}
Receiver::~Receiver()
{
}
#include "transmitter.h"
Transmitter::Transmitter(QWidget *parent) : QWidget(parent)
{
}
I have encountered a issue. I am trying to destroy a widget which was declared as an object in my mainwindow widget. I was hoping to get a "destroyed" signal in the mainwindow widget when the destruction take place - but I don't.
Here is the code:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QPushButton>
#include <QBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPointF>
#include <QString>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QComboBox>
#include <QByteArray>
#include <QDebug>
#include <QListWidget>
#include <QListWidgetItem>
#include <QFile>
#include <QTimer>
#include <QDateTime>
#include <QDir>
#include <stddef.h>
#include <stdint.h>
#include <QGroupBox>
#include <QMouseEvent>
#include <QTextEdit>
#include <math.h>
#include <QClipboard>
#include <QMimeData>
#include <QApplication>
#include <QDoubleSpinBox>
#include <QSpinBox>
#include "receiver.h"
#include "transmitter.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
Receiver *rec;
Transmitter *tran;
QPushButton *transmitter_button;
QPushButton *receiver_button;
private slots:
void receiver_slot(void);
void transmitter_slot(void);
void receiver_destroyed(void);
};
#endif // MAINWINDOW_H
#ifndef RECEIVER_H
#define RECEIVER_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QPushButton>
#include <QBoxLayout>
#include <QDebug>
class Receiver : public QWidget
{
Q_OBJECT
public:
explicit Receiver(QWidget *parent = 0);
~Receiver();
private:
QPushButton *close;
signals:
void close_sig(void);
public slots:
void close_rec(void);
//void abvgd(void);
};
#endif // RECEIVER_H
#ifndef TRANSMITTER_H
#define TRANSMITTER_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
class Transmitter : public QWidget
{
Q_OBJECT
public:
explicit Transmitter(QWidget *parent = 0);
//~Transmitter();
private:
//QPushButton *close;
signals:
public slots:
//void close_tran(void);
};
#endif // TRANSMITTER_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
transmitter_button = new QPushButton("Transmitter");
receiver_button = new QPushButton("Receiver");
QHBoxLayout *horizontal_0 = new QHBoxLayout;
horizontal_0->addWidget(transmitter_button);
horizontal_0->addWidget(receiver_button);
ui->centralWidget->setLayout(horizontal_0);
connect(transmitter_button, SIGNAL(clicked(bool)), this, SLOT(transmitter_slot()));
connect(receiver_button, SIGNAL(clicked(bool)), this, SLOT(receiver_slot()));
connect(rec, SIGNAL(destroyed(QObject*)), this, SLOT(receiver_destroyed()));
}
void MainWindow::transmitter_slot(void)
{
tran = new Transmitter;
transmitter_button->setEnabled(false);
tran->show();
}
void MainWindow::receiver_slot(void)
{
rec = new Receiver;
receiver_button->setEnabled(false);
rec->show();
}
void MainWindow::receiver_destroyed(void)
{
qDebug() << "ok";
receiver_button->setEnabled(true);
}
MainWindow::~MainWindow()
{
delete ui;
}
#include "receiver.h"
Receiver::Receiver(QWidget *parent) : QWidget(parent)
{
close = new QPushButton("Close");
QHBoxLayout *horizontal_0 = new QHBoxLayout;
horizontal_0->addWidget(close);
this->setLayout(horizontal_0);
connect(close, SIGNAL(clicked(bool)), this, SLOT(close_rec()));
}
void Receiver::close_rec(void)
{
this->~Receiver();
}
Receiver::~Receiver()
{
}
#include "transmitter.h"
Transmitter::Transmitter(QWidget *parent) : QWidget(parent)
{
}