Наследование от проблемы MainWindow в Qt - PullRequest
0 голосов
/ 16 апреля 2020

Я написал программу для управления устройством с последовательным портом. Это прекрасно работает, но я хотел бы отделить класс, который будет работать с последовательными портами. Я также хочу иметь доступ к кнопкам, выпадающим спискам и т. Д. c. из этого класса.

Вот наиболее важные части кода:

Заголовок Serialsettings:

#ifndef SERIALSETTINGS_H
#define SERIALSETTINGS_H

#include <QMainWindow>
#include <QSerialPort>
#include "mainwindow.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class SerialSettings : public MainWindow
{
    Q_OBJECT
public:

    struct Settings
    {
        QString name;
        qint32 baudRate;
        QString stringBaudRate;
        QSerialPort::DataBits dataBits;
        QString stringDataBits;
        QSerialPort::Parity parity;
        QString stringParity;
        QSerialPort::StopBits stopBits;
        QString stringStopBits;
        QSerialPort::FlowControl flowControl;
        QString stringFlowControl;
    };

    explicit SerialSettings(QWidget *parent = nullptr);
    ~SerialSettings();
    Settings settings() const;
signals:
private:
    void fillPortsInfo();
    void fillPortsParameters();
    void updateSettings();

private:
    Settings m_currentSettings;
};

#endif 

Источник Serialsettings:

#include "serialsettings.h"
#include <QSerialPort>
#include <QSerialPortInfo>
#include "mainwindow.h"
#include "ui_mainwindow.h"

SerialSettings::SerialSettings(QWidget *parent)
    : MainWindow(parent)

{

    //some functions
}

mainwindow. h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSerialPort>
//#include "serialsettings.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class SerialSettings;

class MainWindow : public QMainWindow  
{
    Q_OBJECT

public:

    Ui::MainWindow *ui;

    explicit MainWindow(QWidget *parent = nullptr);
     ~MainWindow();
    // some code
};
#endif

mainwindow. cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "serialsettings.h"
#include <QSerialPortInfo>
#include <QSerialPort>
#include <QString>
#include <QDebug>
#include <QTimer>



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  //some code
};

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

В данный момент у меня нет ошибок, но она заканчивается: Программа неожиданно завершила.

Не могли бы вы помочь мне, пожалуйста, с этой проблемой?

...