Qt c++ как использовать указатель на основное окно в дополнительном окне в нескольких функциях?
Этот вопрос возник, когда я пытался связать 2 окна, но это ладно, это работает, также мне надо было использовать слоты и сигналы, а запихать их в ту же функцию, которая открывает основное окно по нажатию кнопки, не вышло, выдало ошибку. Попытался объявить указатель в заговолочном файле, но так не принимает, говорит, что мб я имел в виду QMainWindow, а не MainWindow, который нужен мне, с QMainWindow возникают шибки уже в основной части кода, говорит что моя переменная не объявлена. Вот код:
#include "form.h"
#include "ui_form.h"
#include "QPushButton"
#include "QVBoxLayout"
#include "mainwindow.h"
#include "QTextCodec"
//#include "QWidget"
Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form)
{
ui->setupUi(this);
MainWindow *m2w = new MainWindow;
connect(ui->baton, &QPushButton::clicked, this, &Form::OP);
connect(this, &Form::txt1, m2w, &MainWindow::slot1);
connect(this, &Form::txt2, m2w, &MainWindow::slot2);
ui->baton->setEnabled(false);
}
/*Form::Form(MainWindow *m2w, QWidget *parent)
: QDialog(parent), m2w(m2w) {
}*/
void Form::OP()
{
//MainWindow *m2w = new MainWindow;
//MainWindow *m3w = m2w;
m2w->show();
}
Form::~Form()
{
delete ui;
}
void Form::on_knopka_clicked()
{
emit txt1(ui->a1->text());
emit txt2(ui->a2->text());
ui->baton->setEnabled(true);
}
m2w - указатель на основное окно В основной функции происходит коннект сигналов и слотов, ну и вызов функции OP, которая открывает основное окно. Пример заговолочного файла:
#ifndef FORM_H
#define FORM_H
#include <QPushButton>
#include <QWidget>
#include <mainwindow.h>
#include <QMainWindow>
#include <QTextCodec>
namespace Ui
{
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
//MainWindow *m2w = new MainWindow;
Form(QWidget *parent = nullptr);
~Form();
signals:
void txt1(QString a);
void txt2(QString a);
private slots:
void OP();
void on_knopka_clicked();
//void on_a1_textchanged();
//void on_a2_textchanged();
private:
MainWindow *m2w = new MainWindow;
Ui::Form *ui;
QPushButton *knopka;
};
/*Form::Form(MainWindow *m2w, QWidget *parent)
: QDialog(parent), m2w(m2w) {
}*/
#endif // FORM_H